home *** CD-ROM | disk | FTP | other *** search
/ Amiga Developer CD v2.1 / Amiga Developer CD v2.1.iso / Contributions / Heinz_Wrobel / Networking / Envoy_3.0 / FixedBugs < prev    next >
Text File  |  1998-10-27  |  179KB  |  2,993 lines

  1. /*------------------------------------------------------------------------*/
  2. /*                                                                        *
  3.  *  $Id: FixedBugs 1.19 1998/10/27 21:57:27 heinz Exp $
  4.  *                                                                        */
  5. /*------------------------------------------------------------------------*/
  6.  
  7. Informal list of fixed bugs and changes since Envoy 1.65
  8. ========================================================
  9.  
  10. [Really important behaviour changes that need to be documented are marked
  11.  with '!!']
  12.  
  13.     - Crash on aborting examines (C:LIST, CTRL-C).
  14.     - FindService() returning garbage error codes.
  15.     - GetHostName() appending LocalHost to the passed buffer for a NULL
  16.       enitity passed.
  17.     - Crashes in HostRequestA(). Lousy GUI code. Fixed for now. Should
  18.       be replaced.
  19.     - Repaired half a ton of "cast" bugs. Lots of code used
  20.       inappropriate and sometimes really destructive casts.
  21.     - NIPCBuffer trashing on local ACTION_READ and ACTION_WRITE.
  22.     - endless retry on security reject which in essence hangs the client
  23.       and loads the line.
  24.     - filesystem.service used to open after one failed open if
  25.       nipc.library was available, even if the other libraries needed
  26.       were not. Net result ==> GURU!
  27.     - ACTION_SET_FILE_SIZE should work now.
  28.     - hanging lock on security failure when trying to enter a directory.
  29.     - fs server left locks on failing mount requests for non existing volumes.
  30.     - on mount fs server reported "doesn't exist" when it in fact rejected the
  31.       user.
  32.     - server had serious problems with handling requester suppression on a
  33.       mount.
  34.     - ACTION_FH_FROM_LOCK works now.
  35.     - fcconfig deleted temporary ".info" file manually. It now uses
  36.       DeleteDiskObject().
  37.     - fsconfig did not really fit onto a 640x200 topaz 8 WB.
  38.     - The fs code and the fs prefs code duplicated many structures and
  39.       defines which should have been defined in one place only to avoid
  40.       compatibility breaks. Fixed now. Referencing includes across
  41.       directories is not nice but a lot better than duplicating their
  42.       contents arbitrarily. I need to do something about nipc, too.
  43.     - Cleaned out obsolete intuition identifiers where I found them.
  44.     - Groups prefs has now a better login.
  45.     - About menus added to the filesystem prefs editors.
  46.     - An english locale text for the nipc prefs was too long. Fixed.
  47.     - Small kludge added to nipc.library to have Envoy 1.65 behaviour on
  48.       the S2 CopyFromBuffer callback. Envoy 1.65 always returned success on
  49.       this callback no matter what. Hmm. DO NOT DEPEND ON THIS!
  50.     - Missing Permit() in FindEntity() code could potentially have stopped
  51.       the system.
  52.     - nipc S2 code could leave buffer lying around on low memory.
  53.     - nipc S2 code did not necessarily queue ARP requests again when
  54.       the remote side came back into service.
  55.     - internal nipc S2 packet counters for internal statistics were not
  56.       handled correctly. Doesn't matter for the user though. This
  57.       was more a cosmetic fix.
  58.     - nipc UDP closed connection via Forbid() protection while the list was
  59.       otherwise semaphore protected.
  60.     - nipc ARP buffer entry timeout value was wrong by a factor of 10.
  61.     - nipc doesn't depend on services.library internals anymore.
  62.       services.library V40(!) has special private access functions
  63.       now. services manager uses these for locking now, too.
  64.     - CreateEntityA() made the entity available before it was fully
  65.       initialised. If this was done just at the "right" time,
  66.       nipc.library would crash or do other strange things.
  67.     - nipc RDP made an active connection available on open before having
  68.       set up all data needed.
  69.     - gross bugs in nipc RDP handling. The headerlength was not set according
  70.       to RFC908 and on dataless "flag" packets the wrong sequence number
  71.       was used! Actually I am not sure if RDP works as described in
  72.       RFC908/1151 at all. The code looks more like "we do it not quite like
  73.       they do it" which really is annoying.
  74.     - dataless RDP packets updated the sequence number of the last ack'ed
  75.       packet to the current one even if there was no ack!
  76.     - nipc RDP data acceptance via PacketIn() had major problems:
  77.  
  78.         - If a needed packet in sequence did not arrive, it would continue
  79.           to queue even redundant packets until death.
  80.         - In two places it had search algorithms with an O(n^2) like
  81.           brute force approach to the problem. Hmpfh.
  82.         - it ack'ed segments but did not tell the timeout code that those
  83.           segments were acked. So the timeout code sent another ack.
  84.  
  85.       I rewrote this completely. No reasonable way to fix it without
  86.       throwing it out.
  87.     - nipc RDP code would in some cases either dereference NULL pointers
  88.       or other invalid list pointers, access closed (non existing!)
  89.       connections, or send spurious resets to the other side with garbage
  90.       sequence numbers.
  91.     - On closing nipc RDP connections in the listening state, the RDP code
  92.       sent a reset to some undiscovered country.
  93.     - nipc RDP resets were not necessarily obeyed.
  94.     - While checking on some nipc stuff I found that NIPCConfig would
  95.       really barf on you if you tried to use the Realm configuration
  96.       screen. As it turned out, someone used "mlh_Tail" instead of
  97.       "mlh_TailPred" for walking a list.
  98.     - nipc AMP code cleared out all the RDP flags when it had been
  99.       signaled on an available transmit window. '!' was used for inverting
  100.       a bit mask rather than '~' in three places scattered in
  101.       BeginTransaction() and ReplyTransaction()! A sure killer IMHO.
  102.       The same bug was in DeleteEntity() in handling entity flags.
  103.       Just wondering: How did nipc work at all? ;^) :-(
  104.     - nipc RDP will now flush still pending writes when they are
  105.       acknowledged, not only on a timeout run after it has timed out!
  106.     - On startup nipc will do better checking of any sana2 device it tries
  107.       to open. This fixes e.g. an open amoksana.device with no HW
  108.       connected.
  109.     - If a sana2 device goes into "failure mode" and barfs on any and
  110.       all requests for some reason, nipc.library would hog the CPU
  111.       and in effect lock the system. Error handling tries to be
  112.       smarter now, even though there is no true general solution to
  113.       the problem. This should help in most cases, though.
  114.     - FindEntity() messed with an entity after releasing the entity list
  115.       semaphore. Tiny window, but a window.
  116.     - password hook in the login requester fixed. Now it is possible to
  117.       delete a password that is too long and retype it.
  118.     - printer prefs and Users are now localised.
  119.     - Strange double click behaviour in Filesystem Imports ListView
  120.       fixed.
  121.     - fixed potential holes in nipc sana 2 code that could have messed up
  122.       sana 2 addresses with a bit count that is not a multipe of eight.
  123.     - nipc sana 2 code did not clear allocated IORequest memory in all
  124.       cases. This could have caused strange flag settings etc.
  125.  !! - nipc ARP will now be used for all HW types, not just for
  126.  !!   ethernet connections. This is an incompatible change but fixes
  127.  !!   the HW address vs. IP address dependency problems.
  128.  !! - If the user chose defaults for IP and ARP type in the network
  129.  !!   configuration for a device, he will get ethernet values 2048 and 2054
  130.  !!   unless ARCNET is used. Then 240 and 241 are used as defaults
  131.  !!   in nipc.library. While this is not a good solution at all as it
  132.  !!   doesn't take into account the actual HW available, it will at
  133.  !!   least give reproducible results compared to the "ignore the
  134.  !!   checkmarks and take whatever we have" type of behaviour.
  135.     - There is a major conceptual problem with RDP sequence number wrap
  136.       around. This always has and still does completely confuse the RDP
  137.       code and will in effect make the RDP connection affected unusable and
  138.       probably flood the net with packet retransmits that are never
  139.       correctly acknowledged. I am in the process of doing something about
  140.       this, but this is a _very_ tricky subject. Hopefully my rework
  141.       of sequence number handling works. This needs more testing.
  142.     - With my RDP rework I added a new bug affecting the start up of a
  143.       connection. For fixing this bug I did some heavy RDP debugging.
  144.       So RDP connections should work a lot better now. Especially
  145.       starting up an RDP connection should be now as fast as it used
  146.       to be again. Again, the new release might be incompatible to
  147.       previous buggy releases. Sorry for the inconvenience. We are now
  148.       at nipc.library 40.18.
  149.     - Changed the printspool.service naming convention for jobs from
  150.       "t:job%ld" to "T:EnvoyPrintJob_%ld" to avoid any conflicts.
  151.     - Services Configuration should no longer leave filelocks or library opens
  152.       hanging! It will also default to "/Services" now as directory for
  153.       adding services (it is based in Configurations!). This should help
  154.       poor B. J. User somewhat.
  155.  
  156.     - Back to the filesystem. ACTION_READ_LINK returned DOSTRUE and
  157.       ERROR_ACTION_NOT_KNOWN for some strange reason. Fixed. This shouldn't
  158.       have been a problem anyway as ReadLink() should only be called if
  159.       ERROR_IS_SOFT_LINK has been returned by the FS, which of course
  160.       cannot happen.
  161.     - Found a hole in internal restarts of ExAll type requests.
  162.       Packets were added to the head of the main FS packet port
  163.       without any protection at all!
  164.     - ACTION_MAKE_LINK will now work for hard links. This might
  165.       e.g. help DUUCP users with a networked news tree.
  166.     - I decided to finally try it: Record locking should work now.
  167.       This needs more testing though for reliability.
  168.     - ACTION_DELETE_OBJECT may take a lot longer for large files than
  169.       pretty much any other packet. So the default timeout of 6
  170.       seconds was not enough and even though the packet succeeded, the
  171.       network transaction timed out. I bumped the timeout to 18
  172.       seconds for a delete. This stuff shouldn't be done via a single
  173.       transaction, but it is not at all easy to rewrite!
  174.       Bumping the timeout is not a solution but it'll make the situation
  175.       at least a lot better for most users.
  176.     - Really nasty bug on reconnect of a broken network mount. The
  177.       client passed the full server path of the object in question
  178.       without the server drive specifier. This could lead to write
  179.       files popping up in strange places suddenly and read files not
  180.       to reconnect. Same problem fixed for locks.
  181.     - ACTION_READ/ACTION_WRITE could still leave buffers lying around on
  182.       failure. Should be fixed now.
  183.     - ACTION_READ/ACTION_WRITE would pretty much garble the client seek
  184.       position on network failure or partial R/W failure. Now a bona fide
  185.       attempt is done to keep the seek position correct. This might still
  186.       fail of course, but this is better than not doing anything at all
  187.       about it.
  188.     - While an ACTION_READ/ACTION_WRITE is pending all incoming packets for
  189.       this file handle are saved and queued again after the R/W is
  190.       complete. The packets were requeued in reversed order and without
  191.       sufficient list protection.
  192.     - I found a reproducible case where after a reconnect the client was
  193.       accessing the root of the mounted server drive where the network
  194.       volume is located, and not the root of the network volume.
  195.     - The server did not clean up exall handling for locks discarded on
  196.       a dead mount.
  197.     - The client/server had an internal concept of a -1 lock which
  198.       represented the current server directory on reconnect. No code
  199.       used this feature for anything useful and it messed up
  200.       reconnections with volume relative paths. I took it out.
  201.       Reconnect works volume base relative now.
  202.     - ACTION_EXAMINE_ALL was commented out on the client side. Why? Because
  203.       it was totally and absolutely f...ouled up in many subtle ways
  204.       on both the client and server side. It should work now. Please
  205.       test this and all the bells and whistles like eac_MatchFunc in
  206.       detail. Why I did all this work? Because EXAMINE_ALL and all the
  207.       other examine functions share common code. So I had to fix it.
  208.     - ACTION_EXAMINE_NEXT could be ended prematurely, pulling out the rug
  209.       under the client while doing this.
  210.     - The server tried to filter filenames in the examine calls even
  211.       if there was no buffer space set up.
  212.  
  213.     - Did some autodoc typo fixes in nipc.library.
  214.     - Tiny change in nipc.library's buffer handling. What is
  215.       externally visible as AppendNIPCBuff() will now move the list of
  216.       buffer entries in one piece instead of entry after entry. This
  217.       saves some CPU time. I improved this on the way as I found a
  218.       possible cause for an enforcer hit in low memory situations.
  219.       Found this due to a bug report on nipc enforcer hits that were
  220.       actually caused by the fs code.
  221.     - With the fs update, I introduced a bug in R/W buffer handling
  222.       that could cause enforcer hits in nipc.library under certain
  223.       network failure situations. Fixed, hopefully.
  224.     - Interesting enough, I cultivated a bug in exall handling when
  225.       redoing the exall stuff. The matchstring was passed to the
  226.       server to filter entries. While this is in theory a neat idea
  227.       by the C= guys to save on the actual transfer, it doesn't work
  228.       as I know now. Preparsed patterns are not portable between
  229.       different dos.library versions. Now all the filtering is done on
  230.       the client side. This is unfortunately much less efficient.
  231.     - Another bug was in filtering of exall entries on the client
  232.       side. It did not remove entries correctly in all cases.
  233.  
  234.     - The sana2 code in nipc.library could "forget" to requeue packets for
  235.       ARP under certain conditions. It also queued read packets for devices
  236.       known to be offline which is totally useless and hogs the CPU.
  237.     - Slight rework of R/W packet handling to be on the safe side. I
  238.       _think_ I found the hole causing spurious enforcer hits via
  239.       nipc.library once in a while, but I am not sure yet.
  240.  
  241.     - "Network Configuration" will no longer force the realm
  242.       checkboxes set, just because there are entries in the realm
  243.       lists. This makes it possible to turn off a realmserver without
  244.       loosing the entered prefs data.
  245.     - It should be possible now to use the RETURN key in the "Network
  246.       Configuration" "Host Configuration" panel to hop from gadget to
  247.       gadget just like with all the other panels.
  248.     - There is still a bug in the RDP code when a packet sequence number
  249.       wrap around occurs. I found this based on a hunch regarding the
  250.       "overnight hanging bug". This bug in effect breaks the
  251.       connection. I have started to investigate and fix this, and as a
  252.       result the new nipc.library will once again be absolutely
  253.       incompatible to previous versions. Sorry. A side effect of my
  254.       work for a fix is that some fields are now 32 bit aligned which
  255.       should help on anything >=68020, i.e. >= A1200.
  256.     - Sequence number wraparound should be ok now. Finally.
  257.     - Fixed a few holes in the RDP code where a task waiting on RDP
  258.       permission to send stuff would sleep forever. When this happened
  259.       due to the sequence number wrap around bug, this connection
  260.       would effectively hang. This should explain and fix the
  261.       "overnight hangs" for good. I hope there isn't more of this.
  262.       We are now at nipc.library 40.24.
  263.  
  264.     - Note that nipc will not use trans_Timeout for local transactions
  265.       currently. So a local entity connection will hang if the
  266.       destination hangs. The source has no chance to recover. I feel
  267.       that this is a bug (which is currently hard to fix). What do you
  268.       think? COMMENTS ARE WELCOME!
  269.     - The server could show erratic behaviour if you sent paths longer than
  270.       128 characters to ACTION_LOCATE/DELETE_OBJECT and ACTION_CREATE_DIR.
  271.     - ACTION_SET_DATE would return garbage results on a security failure.
  272.     - ACTION_CHANGE_MODE was flaky with filehandles before. Should work now.
  273.     - fs server locked a semaphore a few lines to late. No problem with
  274.       normal use, but still a bug.
  275.     - On cleaning up dead mounts, the server left a lock lying around.
  276.     - The client was flaky with timeout settings on reconnect. This could
  277.       hang a reconnect.
  278.     - Unlocking NULL locks is not nice, but should be regarded as ok. This
  279.       is now the case.
  280.     - Believe it or not, I found another nipc bug. If you deleted a public
  281.       entity that still had connections pending, it would be silenced as
  282.       far as possible, but not be made private. This would lead to enforcer
  283.       hits if a remote side tried to enumerate entities. As a side effect of
  284.       my fix, FindEntity() will now behave according to spec and only find
  285.       local entites if they were created with ENT_Public, just like with
  286.       remote entities. We are now up to nipc.library 40.25. How many
  287.       revision will there be?
  288.     - ACTION_DELETE_OBJECT will now run async on the server. It should
  289.       no longer block server activity for other clients until the
  290.       delete is done. The client will get a response when the delete is
  291.       done, but the server is not locked up for other clients in the
  292.       meantime.
  293.     - The client is now a little better about doing at least one retry with
  294.       a prolonged timeout itself before putting up a requester. So
  295.       timeout requesters will come later now.
  296.     - EFS should behave _much_better_ now with server drives having RMS. It
  297.       used to barf in many ways, now it should handle this rather
  298.       gracefully and hopefully do the right thing in all cases. As this
  299.       needs truly tons of testing, I hesitate to say that Envoy has RMS
  300.       now. While the mounts on the client turn up as public entities now,
  301.       it won't make any sense for a user to FindEntity() them. They are
  302.       public only to let the server be able to contact them in majik wayz.
  303.       Please try this with CDx: and DFx: and whatever you got. Note that
  304.       RMS does not carry across machines. You can't export a volume in
  305.       df0:, get locks on it on the client, move the disk physically to the
  306.       client's disk drives and expect it to be recognized.
  307.  !! - A BEHAVIOUR CHANGE of fs exports. An export with an empty export
  308.  !!   name used to get the clients device mount name. Now it will get
  309.  !!   the true volume name of the servers volume. This makes much more
  310.  !!   sense and an empty name is now the preferred setting for
  311.  !!   exporting a DOS device with RMS. Actually it is probably
  312.  !!   reasonable to say a few things about RMS name handling and
  313.  !!   reconnect behaviour now. As described above the client used to
  314.  !!   have the same name for the volume node as for the client's
  315.  !!   device node if no export name was specified on the server. This
  316.  !!   was not logical, as both the export and import prefs listed the
  317.  !!   server's export path (typically a device name) in this case. In
  318.  !!   this case the client can make much more use of the server's
  319.  !!   volume name. All this does not affect name use of the client at
  320.  !!   all, as of course the device node is still there and any
  321.  !!   reference to that name will now go via the device node instead
  322.  !!   of the volume node. Nothing is lost. The client just has
  323.  !!   additional information available via the correct volume node.
  324.  !!   RMS and reconnect are related to the above. If an export name is
  325.  !!   configured on the server, it will be only used on a mount of an
  326.  !!   inserted volume or a reconnect (which is in effect a remount).
  327.  !!   If no name is configured the true volume name will be used. For
  328.  !!   any disk change, only the true volume nname will be used. Why?
  329.  !!   because having different active volumes with all the same name
  330.  !!   doesn't make much sense. So there is one simple rule now: If you
  331.  !!   export a drive/device with RMS, don't specify an export name.
  332.     - the server should no longer work with garbage guid/uid's on low
  333.       memory situations.
  334.     - I got tired of rebooting, so now the server supports file
  335.       notification on its prefs file in ENV:. One can change the
  336.       export configuration on the fly now. The Services Manager
  337.       will also try to reload its configuration now if it has been
  338.       changed. Note that this cannot (and probably should not) be done
  339.       easily for nipc due to how all the stuff works.
  340.     - Added a "Use" button to the fs export prefs and appropriate menu
  341.       headers to select env: or envarc: values. Default is empty.
  342.     - Services Prefs behaved strange when using the "Last Saved" menu.
  343.       It appended the stuff to the current list of services.
  344.     - Notification should be working now. Some special notes about
  345.       this, though:
  346.         a) Any action done through EFS that should cause a
  347.            notification of the client, will cause one (Guru Book!).
  348.            The ROM fs and RAM handler don't do it that way.
  349.         b) Any action done through the server fs will cause a
  350.            notification if that fs supports notification for the
  351.            action. Needed to get notifed of other's accesses.
  352.         c) As a result, any action done through EFS will cause
  353.             1 notification event if only EFS supports it, and
  354.             2 notification events if both EFS and the server fs
  355.             support it.
  356.       While two events can be annoying at times, they are better than
  357.       none at all. I have no way to tell which actions on the server
  358.       side fs will cause a notification by that fs and which won't.
  359.       Please test this with both signal and message notification and
  360.       whatever flags there are, and with reconnect!
  361.     - The login requester password hook was a pain. I removed editing
  362.       restrictions now to make it work. For users that get lost in
  363.       typing in dots this means, they probably better kill the contents
  364.       and retype in some cases.
  365.     - The printer server should now process spooled client files in 8k
  366.       chunks instead of 1k chunks. This _might_ help efficiency.
  367.     - ACTION_WRITE_PROTECT is supported now. It will leave the server
  368.       untouched and do only client side write protection.
  369.     - Another change for ACTION_DELETE_OBJECT. While it doesn't block
  370.       server operation anymore for other mounts, all packets for the
  371.       client mount of the delete will be queued until the delete is
  372.       done and processed afterwards. Why? To guarantee sequential
  373.       behaviour in packet processing. Note: PLEASE TEST THIS! Maybe by
  374.       sending of an async delete packet and sending other packets
  375.       before the reply comes in. I don't trust my own tests at all
  376.       here. This stuff is tricky.
  377.     - String gadgets in Login/Host requester will be activated on
  378.       window activation.
  379.     - String gadget contents in Host requester will now be used even if
  380.       it wasn't deactivated by TAB/ENTER.
  381.     - I decided not to do anything about the string gadgets in Network
  382.       Configuration, Users, and Groups. This doesn't hurt too much and
  383.       would require some rewrite.
  384.     - I think I found the "split file on reconnect" bug. Finally. A
  385.       baselock for a path of a file to open was assumed to be the
  386.       parent lock of the file itself. So any path specs in the file
  387.       name got lost on the way which messed up paths for reconnect.
  388.     - As Dale correctly said, the printer stuff is FUBAR. Unless there
  389.       are any error reports, I probably won't touch it again. it needs
  390.       to be rethought and rewritten from scratch.
  391.     - Due to all the changes outlined above, I decided to call this
  392.       Envoy 2.0, not 1.8.
  393.  
  394.     - Services Configuration has now "Enabled:" again as english label
  395.       for the checkbox. For <V39 systems, I removed the display of the
  396.       currently selected service under the listview. There was no
  397.       reasonable way to get it to look nice on < 3.0 and >= 3.0.
  398.       This type of "bug fix" has been done to some other prefs editors
  399.       previously by C=. Probably for the same reason. It doesn't hurt
  400.       the user interface though. While doing this I found that
  401.         a) memory was left lying around when adding a bad service
  402.         b) an asl requester was freed twice while another wasn't freed
  403.            at all on exit. Automatic reboot included.
  404.       We are now at 37.13.
  405.     - Enforcer hit in nipc.library fixed. I introduced this bug with
  406.       my fixes for 40.25. Now we are at 40.26.
  407.     - A minor problem with notification in the fs server. Notification
  408.       was not done for the parent directory of the modified object.
  409.       Notification for objects referenced with a lock and an empty
  410.       file name could have been flaky. This should be ok now. I did
  411.       not mention one other thing before: Notification should
  412.       theoretically be done on all the hard links of the modified
  413.       object, too. If you think about it hard, you will realise that
  414.       this is not possible. This is not a bug. Anyway, the server is
  415.       now up to 40.29.
  416.     - This is embarassing. I left in debugging code that delayed a
  417.       notification setup for > 1 second. Server is now at 40.30.
  418.     - The AmiCDRom filesystem doesn't seem to set up its struct Resident
  419.       correctly. This caused hits on volume insertion. I put a kludge into
  420.       the fs server to compensate for this problem. Now at 40.31.
  421.     - The client sets the DiskType in the volume nodes now. This should
  422.       help "Filesystem Imports" to decide on already mounted mounts. Now at
  423.       40.41.
  424.     - Minor typo fixes in some doc files and minor german locale update.
  425.     - Filesystem Imports complained on empty drives even if the mount was
  426.       ok. Fixed. It should be a lot better about determining which drives
  427.       are already mounted, too. The original code had "crashy" tendencies
  428.       for removable media and did not take device mounts into account.
  429.       Now at 40.9.
  430.  
  431.     - Filesystem Imports will now check only active Envoy mounts to
  432.       see if they are already mounted. Inactive mounts should be left
  433.       alone for sure, now. Now at 40.10
  434.     - The efs client did some filehandle init it should not have done.
  435.       Now at 40.42.
  436.     - The efs client could give enforcer hits if someone did an UnLock()
  437.       right after an Examine()/ExNext() in just the right timing. A lock
  438.       was freed twice and invalid memory way referenced in that case. Also
  439.       freeing a ZERO lock could probably result in unusual behaviour.
  440.       As all the lock handling code turned out to have some perfectly
  441.       valid, but obscure areas from the simple readability point of view, I
  442.       did some beautification work in addition to fixing things.
  443.       And while this is very ugly behaviour of any application, efs
  444.       should now be robust against "copied" locks. This last thing is
  445.       mainly a paranoia fix triggered by my research on the exnext problem
  446.       which started this. Now at 40.43.
  447.     - Found some places where lock pointers were set up without a
  448.       check for the BPTR to be ZERO. This was always ugly and is
  449.       deadly now. The efs client is up to 40.44 now.
  450.     - nipc should no longer try to write to sana 2 devices which are
  451.       definitely known to be offline. This should be cosmetic though. I am
  452.       still not clear on what is causing problems with ppp.device. But
  453.       maybe this reduction of io helps finding the actual problem. Now at
  454.       40.27.
  455.     - After some thought I decided to modify the sana 2 device init in nipc
  456.       to complain loud on any problems. I assume now that the user wants
  457.       those devices she specified in Network Configuration to work well.
  458.       Previously only a failure to open a device at all caused an
  459.       requester to pop up. Now any "fatal" error which will prohibit nipc
  460.       from setting up and using a device will generate a requester. This
  461.       should reduce the "doesn't do anything after boot" problems
  462.       without user notification by about 100%. And it should help fix
  463.       bugs as you will get to see an error number. nipc.library is now
  464.       at 40.28.
  465.  
  466.     - The EFS client returned ERROR_WRITE_PROTECTED instead of
  467.       ERROR_DISK_WRITE_PROTECTED on an active ACTION_WRITE_PROTECT.
  468.       This is fixed now and the EFS client is now at 40.45.
  469.     - Bumped some versions to allow for a decent HWGRCS version freeze
  470.       for release. I was unfortunately lazy sometimes. No change in
  471.       functionality at all. Just a recompile with a new version number.
  472.         filesystem.service:         40.32
  473.         Filesystem Imports:         40.11
  474.         Filesystem Exports:         40.9
  475.         nipc.library:               40.29
  476.         envoy.library:              37.21
  477.         services.library:           40.2
  478.  !! - I have a hunch concerning the ppp.device problem. It is now
  479.  !!   possible to disable ARP by setting the ARP type to the IP type.
  480.  !!   It counts as unsupported hack, though. I am not sure it will stay
  481.  !!   that way. This does not affect compatibility as it is a normally
  482.  !!   illegal combination of values anyway. Maybe ARP was the problem.
  483.  !!   If this was truly the problem, we need to either document this
  484.  !!   way to turn off ARP or find a more intuitive way to do this
  485.  !!   for the user. Hmm. What about an ARP type of 0 to turn off ARP?
  486.  !!   Hmm. Let's wait on feedback. nipc.library is now at 40.30.
  487.     - The list of services was not correctly locked by nipc during an
  488.       inquiry. This could lead to overwritten memory, crashes or similarly
  489.       nasty things when the list changed at just the right time while an
  490.       inquiry was active. nipc.library is now at 40.31.
  491.     - The host requester in envoy.library had rather high stack usage. This
  492.       should be better now. It could also mess up the system if you
  493.       specified to many matchtags. This should be better, too. Now at
  494.       37.23.
  495.     - Filesystem Imports had rather high stack usage, too. It also
  496.       allocated a VisualInfo and never ever freed it. Now at 40.12.
  497.  
  498.  !! - Ok, this is it. The IMHO last change before releasing Envoy 2.0.
  499.  !!   The official way to turn ARP off is to set the ARP type to 0
  500.  !!   now. nipc.library is now at 40.32.
  501.  !!   Not all sana 2 drivers can transmit ARP packets. ARP is
  502.  !!   usually useful on Ethernet, and maybe on ARCNET or amoknet.
  503.  !!   For other sana 2 devices, refer to the respective documentation.
  504.  
  505.     *** RELEASE OF ENVOY 2.0, X-MAS 1994 ***
  506.  
  507.     - nipc/route.c: There was no release function for routes found with
  508.       Route(). So DeleteRoute() would not work if a route had ever been
  509.       used. The route hash value function seemed somewhat messed up.
  510.       NetMask() called NetNum() for nothing. AddRoute() could return
  511.       garbage or lose memory.
  512.       nipc.library is now at 40.33.
  513.     - Network Configuration could crash if the user reloaded the prefs
  514.       while a device/realm/route was currently selected in a listview.
  515.       Now at 37.14.
  516.     - This is a fix for a documentation bug in this FixedBugs file up to
  517.       now: "Thanks to Ralph Babel for his Guru book and some good hints on
  518.       certain things.". Good enough, Ralph? ;^)
  519.     - There is a bug within the ExAll() handling of BABELCDROMFS 1.2
  520.       that really makes Envoy barf bad if you export a CD-ROM drive
  521.       using this file system. Nothing I can do about it. Ralph Babel
  522.       is working on a fix. It is probably out already for some time
  523.       when this text is seen in public places.
  524.     - The Host requester had no default position on screen. So if the
  525.       application using it was not specifying a position, anything could
  526.       happen. The default position for all envoy.library requesters is
  527.       now centered on screen. If you have any idea on how to neatly
  528.       keep the last position/size in ENV[ARC?], tell me. Any input
  529.       welcome. envoy.library is now at 37.24.
  530.     - The printer import prefs tried to close the accounts.library
  531.       even though it never opened it. It also used a screen pointer
  532.       that could have been NULL. Printer Import is now at 40.4.
  533.     - accounts.library should no longer do unnecessary $4 accesses.
  534.       Using a central accounts server should be possible. Finally.
  535.       Set the environment variable "Envoy/AccountsServer" to the
  536.       appropriate host name, and all account management should be
  537.       done by Accounts Manager on that host. If the connection fails
  538.       for some reason or times out after 5 seconds, there will be a
  539.       couple of retries before accounts.library gives up. Note that
  540.       this should finally get rid of the distributed accounting file
  541.       mess. You should set up Accounts Manager on _one_ machine only
  542.       and run account management there. accounts.library is now at
  543.       37.7.
  544.     - The printer import prefs should look a lot better now for non
  545.       topaz 8 setups. Printer Import is now at 40.5.
  546.     - The printer export prefs had pretty much all the problems of the
  547.       import prefs. There was also a memory loss. Printer Export is
  548.       now at 40.4.
  549.     - Pretty much all the printer stuff uses a common include file now for
  550.       the common things. Except for the client. The client needs to be
  551.       rewritten from scratch. When I get around to do the rewrite,
  552.       hopefully Envoy will be useful to do local print spooling without
  553.       extra hacks! This is all in the future, though.
  554.       printerimport is now at 40.6, printerexport at 40.5, and the
  555.       printspool.service is at 40.6.
  556.     - The autodoc for UserRequestA() was messed up. envoy.library is now at
  557.       37.25.
  558.     - While reworking the printer import/export prefs, I messed up the WB
  559.       startup of these tools. Fixed now. Printer Import is at 40.7 now,
  560.       Printer Export at 40.6.
  561.     - It seems that my accounts.library work is by far too little to
  562.       fix the problem. I even found a bug in the EFS server. If a list
  563.       of available mounts was requested and no mounts for an
  564.       acceptable user/pw combination were found, the server rejected
  565.       the user instead of returning with an empty list of mounts. The
  566.       EFS server is now at 40.33.
  567.     - The accounts.library part in all of the management should be ok
  568.       now. The library will open even for no server connection as a
  569.       server may be available at any time on a retry. No more panics
  570.       should happen if the server link breaks for some reason.
  571.       The library base was messed up, too. There is still some work
  572.       necessary on all the other modules related to account
  573.       management. accounts.library is now at 37.10.
  574.     - The realm and routing panels, and adding a device in Network
  575.       Configuration worked basically by accident only. The gadget functions
  576.       were using a taglist without a trailing TAG_DONE. Network
  577.       Configuration should be smarter about adding devices now. At least it
  578.       tries to check if the device is a SANA-II device before adding it.
  579.       There was also the possibility that an asl requester was not freed.
  580.       Network Configuration is now at 37.15.
  581.     - For some reason unknown to me the IP protocol number used for the RDP
  582.       implementation has always been off by one. According to RFC1060 it
  583.       should be 27, and it has always been 26. Fixed. There was also an
  584.       interesting problem with subnet masks. Subnet masks are in essence
  585.       and very informally put a "larger" netmask, i.e. based on the
  586.       standard net mask an ip address has, they define additional bits
  587.       taken from the host part of the ip address to be used as subnet for
  588.       routing purposes. This also means that in any reasonable subnet mask,
  589.       all the bits of the netmask for the relevant ip address need to be
  590.       set anyway if the sub net mask should be used as "better"
  591.       replacement for the net mask which nipc does. nipc.library will now
  592.       make this happen if the user failed to specify the netmask bits in
  593.       the subnet mask. Network Configuration might do more checks in the
  594.       future. Routing and realms did not work well together due to wrong
  595.       handling of network masks for devices not using the subnet mask and
  596.       wrong handling of source addresses. This could have caused a loss of
  597.       information about the network on an NIPCInquiry() call and possibly
  598.       an Enforcer hit for a certain mostly useless nipc configuration. All
  599.       of this is a sensitive area, so it needs lots of testing.
  600. !!    Note: This nipc.library is not backwards compatible due to the
  601. !!    protocol number change!
  602.       nipc.library is now at 40.34.
  603.     - SANA-II R2 S2_PacketFilter is now supported by nipc. The private
  604.       AS225 communication hack will only be active if AS225 is installed
  605.       and the device in question does not support SANA-II R2. It should be
  606.       possible now to use e.g. AmiTCP 4 and Envoy on the same S2R2
  607.       complying device driver without having to fiddle with packet types.
  608.       nipc.library is now at 40.35.
  609.     - The Filesystem Export configuration editor created an empty
  610.       configuration file instead of at least a valid IFF FORM when no
  611.       exported volumes were set. The server did not accept this empty
  612.       file as valid configuration and did not update its configuration
  613.       accordingly. Filesystem Exports is now at 40.10.
  614.     - The EFS server did not accept an empty IFF FORM either. It is
  615.       now at 40.35.
  616. !!  - nipc.library should pick up configuration changes to the realm and
  617. !!    route panels via notification. It won't pick up changes to the device
  618. !!    panel and there are reasons for this behaviour. Note that you should
  619. !!    know what you are trying to do when you use this. nipc.library will
  620. !!    simply take out the old realms and route configs and put in your new
  621. !!    selections. This might affect ongoing stuff and you might loose
  622. !!    packets. TEST THIS, PLEASE! nipc.library is now at 40.36.
  623.     - To support the change mentioned above, Network Configuration now has
  624.       a "Use" gadget. Remember: "Use" won't work for the device panel! Not
  625.       much I can do about this inconsistency right now. Network
  626.       Configuration is now at 37.16.
  627.     - nipc.library left a resolver port lying around on exit. It also used a
  628.       strange and dangerous seglist splitting hack on cleanup. This is
  629.       fixed now and a decent shutdown is done. packet filtering should work
  630.       well now with my new version of my a2060.device. Quite a few changes
  631.       to how the resolver handled ip addresses. This was not exactly ok.
  632.       While doing this I had to relayout the routing code. So we might have
  633.       a ton of problems now. TEST ROUTING, REALMS, AND MULTIPLE PROTOCOL
  634.       STACKS, PLEASE! For this nipc.library, you will have to upgrade my
  635.       a2060.device to at least 40.6. Unfortunately the old version had bugs
  636.       in packet filtering which would not do nice things. nipc.library is
  637.       now at 40.37.
  638.     - The requesters in envoy.library could leave a VisualInfo unfreed.
  639.       They also did not return failure when they could not be opened for
  640.       some reason. The autodocs were not exactly correct either and I
  641.       added Window and OptimWindow tags to all of the requesters now
  642.       to make it easier on the user. The layout code is not yet
  643.       optimal, but it's getting better. envoy.library is now at 37.27.
  644.     - Filesystem Exports did not free the VisualInfo it obtained.
  645.       It is now at 40.11.
  646.     - Filesystem Imports uses the new envoy.library tags now. This should
  647.       give visually very attractive results when envoy.library is done.
  648.       it is now at 40.13.
  649.     - Users and Groups behaved rather different in some areas. They
  650.       should both look and behave similarly now. Also the name gadget
  651.       is activated when you create a new user/group and they both
  652.       handle the AccountsServer hopefully correctly! They both used
  653.       standard gadget calls on gadtools gadgets and did not correctly
  654.       handle the listview updates. Users is now at 37.16. Groups is
  655.       now at 37.14.
  656.     - ICMP handling in nipc.library could leave a buffer lying around if no
  657.       route for a packet could be found. The packet filtering should work
  658.       better now and will hopefully avoid unnecessary CPU load when
  659.       multiple protocol stacks are in use. Memory handling for all
  660.       the buffers should be more unified and straightforward internally
  661.       now. Some internal caching code for the buffer handling should speed
  662.       up memory handling a little. Memory use has increased a little.
  663.       nipc.library will now clean up any pending resolver messages on exit.
  664.       It used to simply delete the internal port which cause a delayed
  665.       crash when the pending message finally returned after the
  666.       library was gone. Handling transactions should be more robust
  667.       when the user passed garbage input. nipc.library is now at
  668.       40.39.
  669.     - Printer Import now blocks the main window on using envoy.library
  670.       requesters. It is now at 40.8.
  671.     - Printer Export now blocks the main window on using envoy.library
  672.       requesters. It is now at 40.7.
  673.     - The Accounts Manager did not handle tool types parsing for WB
  674.       startup correctly. There was a potential memory leak. I
  675.       intentionally changed the WB argument parsing a little. Only the
  676.       tooltypes of the program itself will be checked, not those of
  677.       any project icon used. It helps updates and installation to have
  678.       a project icon instead of the real thing in SYS:WBStartup and
  679.       maybe in some other places. But it for sure doesn't make sense
  680.       at all if due to wrong configuration the manager picks up
  681.       different database files for different project icons. It also
  682.       forgot to free memory on exit. Accounts Manager is now at 37.15.
  683.     - Services Manager lost memory on exit. It is now at 40.3.
  684.     - I created to simple project icons for the managers which will be
  685.       used to startup them via WBStartup. I still have to change the
  686.       install script to support this, though. The default place for
  687.       these icons are the manager's directories. They'll be copied to
  688.       WBStartup by the installation and can be copied to arbitrary
  689.       places by the user. This should finally stop the "multiple
  690.       managers floating around" problem.
  691.  
  692.     - With this update to the EFS client, the 2.04 C:Info should work
  693.       again. I overlooked a suggestion in the (great) Guru Book. Sorry. The
  694.       client is now at 40.47.
  695.     - If accounts.library completely failed to contact the host listed as
  696.       server, it will reevaluate the server name on the next command. This
  697.       is to give the user a chance to correct typos in
  698.       ENV:Envoy/AccountsServer on a running system without a reboot.
  699.       accounts.library is now at 37.11.
  700.     - The EFS server will now use an input handler to check on disk
  701.       changes. I did this to get rid of the excessive locking done to
  702.       detect disk changes. It should have done it like this all
  703.       along. Note that the EFS server now relies on the underlying
  704.       filesystem doing correct diskchange notification via the
  705.       input.device queue. I also changed the server task name. The EFS
  706.       server is now at 40.36.
  707.     - accounts.library will only retry once to contact the server
  708.       now. It used to do this three times. With internal nipc.library
  709.       handling of retries this time added up considerably without any
  710.       real use. accounts.library is now at 37.12.
  711.     - Another change to password hook handling. It still didn't work
  712.       quite right it seems. envoy.library is now at 37.28.
  713.     - Used the same hook code in Users now. Users is now at 37.17.
  714.     - Network Configuration should no longer loose the realm server
  715.       name/address when use of a realm server is turned off. Please
  716.       check if this affects nipc.library in any way. It shouldn't, but
  717.       who knows where bugs hide. Network Configuration is now at
  718.       37.17.
  719.     - The password edit hook really gets on my nerves. Now, it should
  720.       finally work better. "Finally"? Hah! Data vu. Let's wait and see.
  721.       Exiting the login requester via TAB is no longer possible.
  722.       envoy.library is now at 37.29.
  723.     - Same password hook change to Users. Users is now at 37.18.
  724.     - Groups will now resort the listview on a group name change.
  725.       Groups is now at 37.15.
  726.     - Printer Export had a mungwall hit on adding a group. It is now
  727.       at 40.9.
  728.     - nipc.library should now recognize its officially assigned UDP
  729.       port number and filter all other packets. There was also another
  730.       routing problem within the resolver code for realm servers.
  731.       nipc.library is now at 40.41.
  732.     - I think I found the cause for spurious "Can't connect to host
  733.       bla" messages. FindService() wasn't really geared up to handle
  734.       multiple simultaneous calls and would return failure in this
  735.       case. services.library is now at 40.3.
  736.     - Network Configuration accepted owner names > 31 characters in
  737.       length even though it couldn't handle this (i.e. crashed) under
  738.       certain circumstances. Realm name gadgets weren't handled correctly
  739.       either for input >19 characters. Network Configuration is now at
  740.       37.19.
  741.     - On loading the current work prefs, Network Configuration freed any
  742.       and all old prefs, even the initial ones. It also did not update the
  743.       display correctly. It is now at 37.20.
  744.     - Services Manager did not free the list of services correctly on exit.
  745.       It would not even not free the list correctly. Actually, I don't know
  746.       why Services Manager did not crash on exit. Magic? Who knows. Anyway,
  747.       it is now at 40.4.
  748.     - ACTION_FH_FROM_LOCK has been broken again since I introduced
  749.       RMS due to a really dumb single character typo. The EFS server
  750.       is now at 40.37.
  751.     - Slight rework to the mount handling in Filesystem Imports. If I
  752.       get around to implement a better mount name handling this should
  753.       help. As a positive side effect of the work the listview is now
  754.       sorted alphabetically. Filesystem Imports is now at 40.14.
  755.     - I learned something new about the AS225 backdoor. When Envoy
  756.       connected to AS225 through the backdoor, all packets _had_ to go
  757.       through this hack internally and the multiple protocol stack
  758.       support of a device driver would be ignored. Ugly, really ugly.
  759.       As we have SANA2R2 complying device drivers for both ARCNET and
  760.       Ethernet and packet filtering support in Envoy, I took out the
  761.       backdoor completely. Less code and a little less overhead.
  762. !!    Note that you have to use SANA2R2 compliant device drivers now if you
  763. !!    want to use Envoy and AS225 together.
  764.       I also removed an ancient paranoia hack related to the
  765.       CopyFromBuffer() implementation used for communicating with S2 device
  766.       drivers. I also changed the CopyFromBuffer() and CopyToBuffer()
  767.       implementations to work a little better. Please tell me if you
  768.       encounter any problems with AS225 or derivatives thereof or any
  769.       device driver out there. nipc.library is now at 40.43.
  770.     - The EFS server could pass a ZERO lock to an Examine() it used.
  771.       While this should not be harmful, it turns out that it can be
  772.       harmful. I am kludging around problems in other people's SW
  773.       here. filesystem.service is now at 40.38.
  774.     - It happened once in a while that the EFS client returned
  775.       ERROR_OBJECT_NOT_FOUND on previously valid file handles or locks.
  776.       This is an indication that they could not be reestablished after a
  777.       network failure for some reason. Even if the server and the
  778.       networking hw works correctly it could happen that locks or fh's
  779.       could not be reestablished because when they were initially set up,
  780.       some path information about the server location was not checked. Now
  781.       locks/fh's won't even be created by the EFS client if this necessary
  782.       path information cannot be obtained. EnvoyFileSystem is now at 40.48.
  783.     - Some cleanups and link rearrangements done to nipc.library. Took
  784.       out a few obsolete lines and moved some code around. No bug fix
  785.       of any kind and I hope I did not introduce any. Please do some
  786.       diskspeed tests with all sorts of hardware. Packet filtering
  787.       slowed down nipc somewhat. I am thinking about adding some sort
  788.       of option to completely turn off packet filtering for the power
  789.       user who doesn't use Envoy together with some other protocol
  790.       stack, but I need more input on this topic first. nipc.library
  791.       is now at 40.44.
  792.     - nipc.library versions beyond 40.45 will be able to do packet
  793.       filtering depending on the settings of the new Network
  794.       Configuration gadget to turn packet filtering on/off. Default is
  795.       "on" and the power user can turn it off whenever she/he wants.
  796.       Note that the locale catalog had to change for this! Network
  797.       Configuration is now at 37.21.
  798.     - envoy.library had severe startup problems. Anything beyond one open
  799.       was hazardous. Any failing open would crash the system. Any close on
  800.       a system with >= OS 2.1 could jeopardize stability. Expunge wasn't
  801.       safe or correctly done either. Interesting enough I needed a 2.1 test
  802.       setup to actually reproduce the problems. 3.1 would pretty much
  803.       handle it great even with those bugs. Special thanks to Dave for
  804.       locating the source of trouble. envoy.library is now at 37.30.
  805.  
  806. About here I froze the 2.0b patch.
  807.  
  808.     - nipc.library had a bug which would mess up an expunge. This should be
  809.       fixed now. Cleaned up some sources to make them more readable
  810.       and once again changed the resolver handling of realm server
  811.       queries. Also evaluates the packet filtering config flag now.
  812.       nipc.library is now at 40.45.
  813.     - The EFS client will now use unique volume names by appending a
  814.       decimal number to the name if it can't use the true name due to
  815.       a name clash. It used to do a time stamp hack. It is now at
  816.       40.49.
  817.     - Some changes to nipc.library. If you tried to delete an Entity
  818.       that had not been lost by all remote users yet, you would be
  819.       left with an unusable entity that you could not get rid of. This
  820.       should be fixed now. The resolver should handle multiple remote
  821.       realm entries for one realm correctly now and due to some
  822.       heavy magic, there is a good chance that PPP connected hosts can
  823.       be added to a realm now without any hassle. The trick is not to
  824.       specify the PPP connected host via its subnet in "Local Realms",
  825.       but with its IP address in "Remote Realms". This is really heavy
  826.       magic! nipc.library might be slightly faster now. Hmm. We'll
  827.       see. nipc.library is now at 40.46.
  828.     - The EFS server will now use the baselock instead of a ZERO lock
  829.       to get the volume name for an RMS export. It also will no longer
  830.       try to use any export path that refers to a file. All of this has
  831.       subtle consequences affecting only those users that do not have
  832.       correct configurations. filesystem.service is now at 40.39.
  833.     - I hacked away on the printspool.service to test some new
  834.       concepts. Printing is done differently now. All printing is done
  835.       on the Amiga where printer.device has been opened. This has not
  836.       changed. The raw data stream is then rerouted via
  837.       envoyprint.device to the printspool.service on the configured
  838.       print server. This works even for the server machine now! The
  839.       printspool.service will put this data to the configured
  840.       underlying device (parallel/seriell or PUNT prefs if configured)
  841.       and do its own timeout handling including a raw "nag" requester.
  842.       Note that PUNT in the service config cannot currently be set via
  843.       the prefs editors. So you can test this only with
  844.       seriell/parallel. The setting will be taken from the current
  845.       printer prefs on the server. Again, this is just a hack to test
  846.       some new concepts. A final printspool.service would do some
  847.       things in a different way. Actually all of the printer stuff will
  848.       probably look different, but the current stuff is good enought to
  849.       test things before really getting into a rewrite. Oh, the
  850.       printspool.service timeout for outgoing data blocks is currently set
  851.       to 30 seconds. printspool.service is at 40.8.
  852.     - The EFS server will switch to an ExAll emulation via
  853.       Examine()/ExNext() now if
  854.         a) it finds a C= filesystem with known ExAll bugs that can't
  855.            really be handled safely.
  856.         b) the user sets a flag in the export config (which is not yet
  857.            implemented there)
  858.       Thanks to Ralph for some hints on what is wrong with ExAll().
  859.       filesystem.service is now at 40.40.
  860.     - Filesystem Imports will now put permanent mounts into
  861.       SYS:DEVS/DosDrivers instead of DEVS:DosDrivers. This should help
  862.       on booting machines where the DEVS: assign has been changed.
  863.       Filesystem Imports is now at 40.15.
  864.     - A new member of the Envoy family has been born after a ~24 hour
  865.       pregnancy of my A3000: Envoy_port-handler. It will replace the
  866.       standard port-handler to allow for redirection of SER:/PAR: in
  867.       case of network printing. This is needed for dumb SW like
  868.       FinalWriter which insists on using SER: or PAR: for PostScript
  869.       printing. Currently the handler does not have this redirection
  870.       feature yet because I need to redefine the import prefs first.
  871.       Features it has compared to port-handler 40.1:
  872.         - timeout requester on SER:/PAR: after 30 seconds.
  873.           This is currently for debugging, but it could be refined
  874.           and localized. Issue: How to configure the timeout values?
  875.           Via the printer import prefs? This works even without
  876.           Envoy so this might be the wrong place. Hmm.
  877.         - Correct results for Seek and SetFileSize packets.
  878.         - Should not barf on multiple queued packets.
  879.         - PAR:FAST and PAR:SLOW to set those bits.
  880.         - PRT:TRUERAW to use PRD_RAWWRITE instead of the Escape
  881.           sequence.
  882.         - Does not do a Stricmp() on BSTRs or BSTR checking without
  883.           taking the length into account.
  884.         - Does not skip allocation checks on startup.
  885.       Note that most of the above is yet untested. Please test the
  886.       "SER:baud/bla" specifications and similar stuff in depth if
  887.       possible. This testing is really important. We can't have bugs
  888.       here! [Oh how I wish port-handler had been converted to use a
  889.       GlobVec != 0 for >=2.0 in spite of all those 1.3 disks out
  890.       there.] This first test release of Envoy_port-handler has been
  891.       frozen at version 42.4.
  892.     - Enforcer hits on large read/writes with transfer errors made me look
  893.       very hard at nipc.library again. I found several places with
  894.       inadequate semaphore locking of shared structures. I also
  895.       rewrote some rather strange loops. Lots of cleanup changes to
  896.       the transaction/entity code. As a positive side effect,
  897.       transaction handling should be even faster now. As I
  898.       cannot reproduce the hits myself even though it was possible to
  899.       identify at least one possible cause, I can only hope you
  900.       really, really, test this! nipc.library is now at 40.47. I hope
  901.       it works well.
  902.     - Along the way I changed the general compiler option files for all
  903.       of Envoy. This gives better results overall, which justifies this
  904.       major change. A full rebuild will come along eventually. The
  905.       betas will pick up this change automatically.
  906.     - nipc.library still had a very strange connection to
  907.       services.library. I removed this code. nipc.library is now at
  908.       40.48.
  909.     - The counterpart in services.library has been removed, too. There
  910.       was also a bug in the failure path of open code. services.library
  911.       is now at 40.5.
  912.     - Some strange version mixup with Services Manager. To be on the
  913.       safe side I bumped the version and rebuilt it. Services Manager
  914.       is now at 40.5.
  915.     - Filesystem Exports now uses a cycle gadget to set the security
  916.       options. The left over checkbox gadget has been turned into a
  917.       'no ExAll()' flag to support filesystem.service >=40.40. Note
  918.       that the catalog had to change for this, too! Filesystem Exports
  919.       is now at 40.13.
  920.  
  921.     - envoyprint.device is now sending a sequence number with every
  922.       transaction. This is of course not backwards compatible, but
  923.       even envoyprint.device will be replaced eventually anyway. I
  924.       need this for testing of the new server stuff. envoyprint.device
  925.       is now at 40.4.
  926.     - The cycle gadget in Filesystem Exports has now the "correct" height.
  927.       The listviews will be sorted alphabetically now. Filesystem
  928.       Exports is now at 40.15.
  929.     - The hunt for bugs in nipc continues. Ralph found some ugly enforcer
  930.       hits and memory list screw ups that occurred under (IMHO) heavy
  931.       transfer load. When looking at them it turned out to be a totally
  932.       timing dependent problem. I could not reproduce it myself, but I
  933.       found two possible causes and fixed them. I'd need a darn fast
  934.       machine, a special networking setup, and task switches at just the
  935.       right time to reproduce those bugs. nipc.library also released a
  936.       semaphore it never obtained on some failure path and one of the
  937.       internal copy functions was really broken. Fixing the last thing was
  938.       cosmetic though, as the broken part is currently not used anyway. For
  939.       this release of nipc.library I disabled the use of memory pools which
  940.       results in a slow library that is easy to debug. All allocations will
  941.       go straight to AllocMem and I ask you to run mungwall with periodic
  942.       "munglist check" runs to find problems immediately, not only after a
  943.       whole memory pool got screwed up. If you find any memory trashing, I
  944.       would need a dump of the memory regions in question in addition to
  945.       all the hit and/or alert messages with segtracer hunk info if
  946.       possible. This debugging release of nipc.library is at 40.49.
  947.     - filesystem.service had a few bugs. For full security logins with
  948.       an "other" user, it returned messed up protection bits under
  949.       certain circumstances. This should be fixed now. I still have to
  950.       fix the "rename security" and "reconnect while deleting" bugs.
  951.       One step at a time though. filesystem.service is now at 40.41.
  952.     - Bugs always turn up in amounts well > 1 after nothing has happened
  953.       for a long time. The "reconnect while deleting" bug was due to a race
  954.       condition on reconnect that also affected "notification maintenance
  955.       on volume removal". Both usually lead to an instant death of the
  956.       server. The "rename security" bug was only part of the problem.
  957.       SetOwner and SetProtection were affected, too. Please test security.
  958.       There also was a potential problem with memory loss when a broken
  959.       prefs file was read in. The server side now tries to compensate
  960.       for the V36/37 Seek() bug, too. filesystem.service is now at
  961.       40.43.
  962. !!  - To test the fixes for the server security handling, I made an
  963. !!    internal enhancement to the EFS client. While doing this I found a
  964. !!    potential problem in the Seek() handling that could cause strange
  965. !!    results when a reconnect or relative seek followed a failing seek. As
  966. !!    a positive side effect of the work I did on this, a Seek(fh, 0,
  967. !!    OFFSET_CURRENT) should be _fast_ now. Please test seeking, including
  968. !!    failing seeks in all directions and modes in detail. Please, please,
  969. !!    please! EnvoyFileSystem is now at 40.50.
  970.     - nipc.library has seen major analysis work now. I found and fixed two
  971.       bugs with the RDP management. It would accept packets on closed
  972.       connections and happily leave the buffer lying around that contained
  973.       the RDP packet that caused a connection to close.
  974.       There was a timing hole where transactions buffers could have been
  975.       freed twice on a fast machine. Also there have been tons of changes
  976.       to the Entity system already. Losing and deleting entities wasn't
  977.       always safe. Except for the RDP problems, all the other stuff
  978.       dates back to the 1.x days. Just a few lines of comments here, but
  979.       MAJOR CHANGES INSIDE. nipc.library is now at 40.50.
  980.     - nipc.library should no longer give enforcer hits after
  981.       filesystem.service hasn't been accessed over a remote link over 30
  982.       minutes. nipc.library is now at 40.51.
  983.     - Still a problem with notification handling due to the changes to get
  984.       the async delete fixed. Also the dead mount timeout handling was
  985.       strange now. The EFS server simply killed any mount that hadn't been
  986.       used for 30 minutes. Now it will kill this mount only if the client
  987.       can no longer be ping'ed. The client needs to reconnect in this case!
  988.       filesystem.service is now at 40.46.
  989.     - Another one "bytes" the dust. Reconnect to a mount on a subdir,
  990.       not on a server root, didn't necessarily do what you expected.
  991.       The server "just said no". filesystem.service is now at 40.47.
  992.     - Cleanup on the EFS client. It is LIBCODE now! EnvoyFileSystem is
  993.       at 40.51.
  994.     - I just stumbled over a strange SAS bug. GO inlining of a single use
  995.       static function (which is called via a cast as LIBCODE __asm with A6
  996.       as paramater!) by using OPTINLOCAL messes up the A6 passing. Guru.
  997.       Simple work around. Don't make the called function static so it
  998.       won't get inlined or declare it as __asm to avoid inlining. Thanks
  999.       for the hint, Steve! EnvoyFileSystem is now at 40.52.
  1000.  
  1001.     - Fixed a problem within the EFS server. The check to avoid an import
  1002.       of a file instead of a directory was a noop due to a missing line of
  1003.       code. filesystem.service is now at 40.49.
  1004.     - If a connection died, nipc would try to release a semaphore that no
  1005.       longer existed. nipc.library is now at 40.53.
  1006.     - nipc.library could overwrite buffer memory if Entities were created
  1007.       while a network query was in progress. A slight change to
  1008.       transaction handling should reduce memory fragmentation. Reenabled
  1009.       pools as they don't seem to cause problems at all. Disabling didn't
  1010.       help finding problems either. So I might as well use them again and
  1011.       reduce fragmentation this way. nipc.library is now at 40.54.
  1012.     - The client will do a check now if a lock is freed twice.
  1013.       EnvoyFileSystem is now at 40.53.
  1014.     - Reworked a2060.device because it wasn't flushing correctly and
  1015.       had a potential problem with multiple protocol stack use. The
  1016.       flushing bug got in my way on nipc testing, so I decided to do
  1017.       some work here. BTW, it should spend _less_ time in Disable()
  1018.       than the original C= device. It might spend more time in a
  1019.       soft interrupt though, depending on the load of incoming data. My
  1020.       a2060.device is now at 40.8.
  1021.  
  1022.     - The "No ExAll()" gadget in Filesystem Exports couldn't be used due to
  1023.       a bug in the gadget code. Gadget sizes should be correct now,
  1024.       too. While doing this, I also killed the obsolete startup code.
  1025.       Filesystem Exports is now at 40.18.
  1026.     - A few more fixes to the WB startup handling of Filesystem Exports. It
  1027.       is now at 40.20.
  1028.     - Services Configuration now has a "Use" button. I should have
  1029.       done this for 2.0. Oh well. The gadget sizes match common usage,
  1030.       now. The listview should appear sorted now. Services
  1031.       Configuration is now at 37.15.
  1032.     - There was a bug in the filesystem.service that really messed up
  1033.       closing the service with CloseLibrary. A garbage seglist value
  1034.       could have been returned which would pretty much trash the
  1035.       system right away. I introduced this bug at 40.42 when I
  1036.       replaced the old library handling code. filesystem.service is
  1037.       now at 40.50.
  1038.     - Network Configuration should now have a correct english title,
  1039.       standard gadget sizes, and sorted listviews. Network
  1040.       Configuration is now at 37.22.
  1041. !!  - I made an important change to the Accounts Manager enhancing
  1042. !!    security. User and Group information will now be written out in
  1043. !!    encrypted form. Conversion of old, unencrypted information is
  1044. !!    automatic on the next database change. So if you want to have your
  1045. !!    database encrypted, just add and remove a dummy user/group to have
  1046. !!    the database written to disk. Accounts Manager is now at 37.16.
  1047.     - My fix for reconnect on files in EFS messed up Lock() of a file
  1048.       and Open(""). This should work again now. Also DupLock() should
  1049.       work on files/dirs now that do not have the execute protection
  1050.       bit set. We now have support for fixing the seek position on
  1051.       r/w operations automatically if the client supports this feature.
  1052.       filesystem.service is now at 40.52.
  1053.     - The EFS client supports handling the seek position during split
  1054.       r/w operations now. There should be NO WAY to mess up the seek
  1055.       position, even for split r/w's with network failures now, if
  1056.       the server side supports the additional info passed.
  1057.       This affects performance. Please make diskspeed tests, telling me on
  1058.       which HW combinations with which buffer sizes you experience what
  1059.       kind of performance hit. EnvoyFileSystem is now at 40.54.
  1060.     - A slight change to ARP handling in nipc.library should improve
  1061.       connection startup by reducing unnecessary traffic. I doubt it
  1062.       is measurable, though. nipc.library is now at 40.55.
  1063.  
  1064.     - Async R/W handling inside the EFS client was broken. it could
  1065.       reply twice to a single packet which would crash the machine.
  1066.       EnvoyFileSystem is now at 40.55.
  1067.     - The Accounts Manager encryption messed up all the admin flags.
  1068.       Accounts Manager is now at 37.17.
  1069.     - Due to stupid US laws Accounts Manager doesn't really do any
  1070.       encryption anymore. It just uses ROT13 now. Accounts Manager is now
  1071.       at 37.18.
  1072.  
  1073.     - Filesystem Imports had a very strange bug in doing string
  1074.       parsing. If the locale.library base was just on a 256 byte
  1075.       boundary (i.e. the low byte of its address was 0 or if it
  1076.       wasn't installed!), one could not really mount anything.
  1077.       This in effect makes it impossible to use it on V37. Ouch.
  1078.       Filesystem Imports is now at 40.17.
  1079.     - Due to a memory allocation without MEMF_CLEAN and a missing
  1080.       preset, any internal volume structure created by the EFS
  1081.       server was no longer freed, even if it was unused.
  1082.       filesystem.service is now at 40.53.
  1083.     - envoyprint.device never freed returning transactions. Ouch. While the
  1084.       functionality is pretty much what I need for the new printing system
  1085.       now, I'll most likely do a rewrite eventually to make this nice and
  1086.       shiny. envoyprint.device is now at 40.5
  1087.     - accounts.library had a problem in the expunge code. This is fixed
  1088.       now. accounts.library is now at 37.15.
  1089.     - services.library had a problem in the expunge code. This is fixed
  1090.       now. services.library is now at 40.7.
  1091.     - nipc.library took an invalid shortcut to IP handling for any
  1092.       local packets to be sent out. These packets will now be handled just
  1093.       like any other packets via the general protocol input handling. In
  1094.       general there was the strange assumption that an IP packet must have
  1095.       a fixed header length. Of course this would have killed any
  1096.       "advanced" setup. The changes should have reduced the overhead in
  1097.       processing packets a tiny little bit. The protocols shouldn't fiddle
  1098.       too much with IP packet headers any longer. This can count as pretty
  1099.       major change. The UDP code will now do checksum tests, too. There was
  1100.       a potential problem in IP address handling of packets that were sent
  1101.       and received locally only. IP packets that may not be fragmented will
  1102.       not be fragmented now. Route hashing should now be a little better.
  1103.       There was also a cosmetic problem in the resolver code which
  1104.       incidentally did not crash anything. I cleaned it up anyway.
  1105.       Registered IP protocols are now checked according to their
  1106.       "priority", e.g. RDP is more important than UDP for Envoy, so
  1107.       an incoming IP packet will be tested for RDP before UDP. ICMP
  1108.       currently is the lowest priority, i.e. it will be checked
  1109.       last. This should help efficiency in packet processing. The
  1110.       IP layer should now pass on and filter options in the packet
  1111.       header correctly. netprobe showed me an interesting autodoc
  1112.       deficiency while debugging all of the above. I added an
  1113.       important note to the NIPCInquiryA() autodoc. There also was an
  1114.       interesting problem in the Expunge handling of this library which
  1115.       could potentially affect system stability. Usage of the
  1116.       LIBCODE getreg hack has been reduced by a fairly simple but
  1117.       basic change. This made the code slightly better and reduced
  1118.       the compiler dependency. All of the above counts as
  1119.       intermediate step. Full ICMP functionality is still missing.
  1120.       nipc.library is now at 40.56.
  1121. !!  - The RDP checksum handling was messed up. I wonder how this
  1122. !!    worked at all. Fixing this makes RDP work according to specs
  1123. !!    of course. nipc.library is IMHO once again incompatible to
  1124. !!    previous versions. I also added a missing initialisation for
  1125. !!    dataless packets to the RDP code. This could have caused
  1126. !!    strange retries. nipc.library is now at 40.57.
  1127. !!  - To be RFC compliant in its IP handling, nipc needs a new flag
  1128. !!    "Is Gateway". This cannot be determined from the current
  1129. !!    settings. I updated Network Configuration to include a gadget
  1130. !!    for this. Note that the catalogs changed for this! Old
  1131. !!    configurations will default to a NON GATEWAY setting. This
  1132. !!    is less dangerous and in most cases does the correct thing.
  1133. !!    It will also finally handle the case where the extra realm
  1134. !!    panels/gadgets are displayed and the user reverts to a no
  1135. !!    realm config via the menu. Network Configuration is now at
  1136. !!    37.23.
  1137.     - I started adding use of the gateway flag to nipc.library.
  1138.       Finally, I will be able to complete ICMP handling inside nipc
  1139.       because of this, too.
  1140.     - EnvoyFileSystem could still get mighty confused on async R/W
  1141.       packets. Heck, it could even get confused on packets in sync.
  1142.       It will no longer force a reconnect if a R/W failed because
  1143.       of a low memory condition. I also reworked the retry
  1144.       handling. It's hopefully continously getting better and more
  1145.       straightforward. It was a mess with a zillion failure paths.
  1146.       There also was a bug where a failed R/W could get the client
  1147.       into an endless loop. The client would also happily retry
  1148.       already aborted R/W actions. For a failed ACTION_END, the
  1149.       internal file handle would not always be cleaned up
  1150.       correctly. I should split up client.c. It is about 4 times
  1151.       that size that is IMHO acceptable for a source file when I
  1152.       count the lines. But if I split it up, the optimizer cannot
  1153.       do such a great job. :-( EnvoyFileSystem is now at 40.56.
  1154.     - There was still at least one retry problem that could cause
  1155.       requester suppression. The retry count will now be reset
  1156.       whenever a successful connection has been made and whenever
  1157.       a requester popped up because of a failure. I also
  1158.       implemented ACTION_INHIBIT. Not that it makes a fat lot of
  1159.       sense, but I noticed that Workbench uses Inhibit() for a
  1160.       nasty internal hack. So I implemented the packet. I didn't
  1161.       really test it yet! It actually doesn't help Workbench either
  1162.       as the nasty hack wants to see a true exec device name inside
  1163.       fssm_Device. The EFS client doesn't have this of course. It
  1164.       might come in handy for testing though because ACTION_INHIBIT
  1165.       will only shut down packet processing and volume list
  1166.       updates. Internal client activity should proceed as usual. It
  1167.       is not a packet that is put through to the server. That
  1168.       wouldn't make too much sense anyway and it would only confuse
  1169.       things. The client could happily clean up a volume node even
  1170.       if there were still pending notifications. I also put in
  1171.       basic ACTION_DIE handling for easier testing. Note that
  1172.       ACTION_DIE is not supported in general because there is no
  1173.       real safe way to implement it. If you don't know exactly what
  1174.       you are doing with it, you will most likely cause a nasty
  1175.       crash! Async R/W's still didn't work. There were several
  1176.       problems in the handling of returned R/W transactions. Thanks
  1177.       to the awful lossiness of AmigaLink ;^), I could easily test
  1178.       this without artificially creating major networking setups.
  1179.       Just try a "LIST DF0: ALL" with AmigaLink to disrupt network
  1180.       transfers nicely. A sneaky method to test the stuff with
  1181.       fairly reproducible results. I never thought that this would
  1182.       actually come in handy. Kai, I hope the device open/expunge
  1183.       will be fixed soon, too! If large R/W's fail due to network
  1184.       overload, the machine should finally no longer die a slow
  1185.       reconnect death! Also the machine will not unnecessarily
  1186.       reconnect for aborted old R/W transaction any longer.
  1187.       Downtimes on overload should be reduced. The R/W changes
  1188.       probably affect performance a little. The overhead for every
  1189.       single R/W has been and still is noticable, the overhead if
  1190.       one R/W needs to be split (which currently happens for
  1191.       requests > 32KB) is not that bad. At least a R/W will
  1192.       _always_ be at the correct seek position with the current EFS
  1193.       client/server. This hasn't always been the case. If you see a
  1194.       noticable performance problem that you can back up with
  1195.       numbers, I might put some extra work into the problem.
  1196.       EnvoyFileSystem is now at 40.57.
  1197.  
  1198.     - Even more changes to EnvoyFileSystem R/W and reconnect
  1199.       handling. Every R/W should now have one less AllocMem/FreeMem
  1200.       combination and therefore one failure path less.
  1201.       Previously, the dynamic delay feature to compensate for slow
  1202.       networks was only used if a reconnect failed already once.
  1203.       Now it will be used if a transaction times out which IMHO
  1204.       makes more sense. The old style could cause a
  1205.  
  1206.         FOREVER
  1207.         {
  1208.             handle some packets
  1209.             handle a packet with a transation timeout
  1210.             reconnect successfully
  1211.         }
  1212.  
  1213.       cycle without any timeout correction. The new cycle will
  1214.       increase the dynamic delay before trying to reconnect. We
  1215.       also do another stunt to avoid a reconnect. On the first try
  1216.       to reconnect, we ping the current destination. If the ping
  1217.       was successful, we simply keep the connection. This will
  1218.       happen only on the _first_ try to reconnect for a failed
  1219.       transaction and should catch isolated timeout occurrences
  1220.       due to network load. By not doing the ping on succeeding
  1221.       tries, we avoid successfully pinging a dead
  1222.       filesystem.service forever. All of this is to avoid
  1223.       unnecessary reconnects which are essentially identical to
  1224.       remounts including all filehandles, locks, etc.
  1225.     - The PingEntity() function in nipc.library was broken. It did
  1226.       not handle limit values >= 1 second well and maybe even
  1227.       confused timer.device. nipc.library is now at 40.58.
  1228.  
  1229.     - The EFS reconnect handling is a nasty thing on both sides.
  1230.       While checking all of this I found a bug in the debugging
  1231.       shutdown code of the server which prevented a restart without
  1232.       flushing it out of memory. Finally the Server should truly
  1233.       generate unique ID's for identifying mounts. Previously it
  1234.       used the memory address of internal mount data which could of
  1235.       course be identical on a reboot. This could have confused the
  1236.       client really bad and possibly crashed the server. Now it
  1237.       uses the current system time when creating the mount with a
  1238.       little additional magic. This should be a better unique
  1239.       value, based on the assumption that on a halfway decent
  1240.       server we have a halfway decent clock. The server check when
  1241.       to discard unused mounts no longer uses PingEntity(). That
  1242.       means the server won't block anymore for a few seconds when
  1243.       it tries to detect a bad mount. After a mount has not been
  1244.       used for 30 minutes, the server will now send out a dummy
  1245.       diskchange notification to the client. The client won't act
  1246.       on this in any major way if the volume information did not
  1247.       change in the meantime. If the client's response comes back
  1248.       to the server, the server will restart its "unused" timer.
  1249.       Otherwise it will assume that the client is dead and kill the
  1250.       mount. The server used to return a "user reject" error if it
  1251.       couldn't find a mount for a packet. It will return a "no
  1252.       mount" error now which is IMHO a lot more appropriate.
  1253.       filesystem.service is now at 40.54.
  1254.     - Reworked reconnect on the client once again. Before
  1255.       actually reconnecting, it will now try to send an
  1256.       ACTION_INHIBIT FALSE to the server. As the server does not
  1257.       implement this packet, this doesn't do any harm. If the
  1258.       transaction succeeds, we can safely assume that this mount is
  1259.       still alive. This should fix excessive reconnects because of
  1260.       spurious timeouts. PingEntity() wasn't such a good idea anyway
  1261.       as it can't check if the mount is still available.
  1262. !!    This is a DEBUGGING release with kprintf output on reconnect!
  1263. !!    Please send me sushi logs for any problems you find!
  1264.       EnvoyFileSystem is now at 40.58.
  1265.     - For testing the nipc and EFS stuff I had to chose hosts and
  1266.       log in and out of my test setup about a million times. As I
  1267.       am a A2024 user with a setup CGTimes 30/courier 18, the
  1268.       requesters of envoy.library that were only "almost" font
  1269.       sensitive really got on my nerves. The host and user/group
  1270.       requester should now pick up the system font setup correctly.
  1271.       The host requester should use a lot less stack now, too.
  1272.       I also tried to make the sizing visually more attractive by
  1273.       rmeoving the gadgets on a IDCMP_SIZEVERIFY message. It
  1274.       turned out though, that even this "do almost nothing" is IMHO
  1275.       too much for verify handling and confuses the poor user
  1276.       who wants to quickly size a window. So I took this out again.
  1277.       I guess we'll have to wait for a nice, small, fast, and
  1278.       resizable V44 gadtools ;^). Please check these major GUI
  1279.       changes for memory leaks etc. envoy.library is now at 37.32.
  1280.     - BIG problem in nipc.library. Probably since at least 40.50. I
  1281.       didn't really do research on this bug in the archives as it
  1282.       wouldn't have helped anyway. If a failing transaction
  1283.       (request or reply) only arrived in fragments due to some
  1284.       network problem, these fragments could show up in the next
  1285.       successful transaction. Hmpf. I spent tons of time on
  1286.       improving SANA, IP, and RDP handling and reworked the Entity
  1287.       chaos. What do I get? A major problem in the Transaction
  1288.       code. Why nobody noticed this before? EFS used to do a brute
  1289.       force reconnect on a transaction failure. This meant losing
  1290.       and finding the remote entity again. The brute force
  1291.       reconnect cleaned up these fragments. So while the problem
  1292.       was there, it hardly ever surfaced. Now we have a more
  1293.       sophisticated reconnect handling in EFS and the bug showed.
  1294.       Please tell me if performance is affected! nipc.library is
  1295.       now at 40.59.
  1296.  
  1297.     - The Network Printing tool will now handle ENV: and ENVARC:
  1298.       prefs separately when setting up or removing Envoy printing.
  1299.       This keeps current printer prefs intact if they differ from
  1300.       the saved prefs. Network Printing is now at 37.5.
  1301.  
  1302.     - nipc still didn't work correctly. I didn't notice it because
  1303.       I concentrated on packet loss and data messups and tested
  1304.       this with AmokNet HW. This HW can be classified as "slow",
  1305.       and for slow HW, nipc did not use IP fragmentation to keep
  1306.       overhead small. This means that I did not notice the bugs
  1307.       that I introduced in the IP fragmentation code after 40.55 at
  1308.       all. Some pointers were not always set up correctly and
  1309.       the packet ID's could be very messy at times. Ouch. I wish I
  1310.       had a spare A3k or A4k here to set up a really nice test
  1311.       environment with both AmokNet and Ethernet. Oh well. I also
  1312.       replaced some strange Forbid() handling with decent semaphore
  1313.       calls. It isn't good style to change too much at once, I
  1314.       know. This time I couldn't resist. I hate Forbid(). This nipc
  1315.       release has been tested with lossy AmokNet HW with and
  1316.       without fragmented packets by artificially affecting the
  1317.       maximum allowed data packet size. Looks good here. Yes, this
  1318.       time I actually _checked_ if fragmented packets were handled.
  1319.       Hopefully this fixes your problems on standard networks. If
  1320.       this release works for you, I'd be very interested in
  1321.       performance data. nipc.library is now at 40.60.
  1322.     - FindEntity() would not set the error information correctly in
  1323.       rare cases of network failure. The RDP code will now use a
  1324.       cache for internal retransmit information. Previously it
  1325.       allocated a wrapper per packet. Now it will allocate at
  1326.       most n wrappers, with n being the respected window size of
  1327.       the connection. The wrappers will be reused. This should
  1328.       reduce memory allocation overhead, fragmentation, and
  1329.       processing time needed fairly well. There was also some
  1330.       garbage in the RDP round trip time estimation and some stupid
  1331.       processing in the state machine. There was also a chance that
  1332.       on opening an RDP connection the nipc.library on the passive
  1333.       side of the open could free an nipc buffer twice if no
  1334.       suitable port to connect to existed. nipc.library is now at
  1335.       40.61.
  1336.     - I am really not sure what kind of problem we have with nipc
  1337.       right now. For testing I added some more paranoia checks for
  1338.       things that should never happen. There was one case where a
  1339.       ReplyTransaction() could mess up an internal counter. But
  1340.       this case would have only been triggered if there wasn't a
  1341.       free signal bit. Very unlikely and impossible with EFS. I
  1342.       doubt that it is actually the problem. The triggered error
  1343.       531 is significant for a connection that got shut down
  1344.       unexpectedly. This can happen only on _very_ severe network
  1345.       failure. Highly unlikely. I redid the library setup code to
  1346.       make debugging and maintenance easier. Hmm. The work of the
  1347.       setup code I could have avoided if I had known how buggy the
  1348.       QuickNetS2.device 2.3 is. Oh well, without a matching test
  1349.       setup and reproducible results one is just fiddling around
  1350.       sometimes :-(. I still have to investigate the sudden
  1351.       appearance of error 531. To help with this, I added even more
  1352.       paranoia checks to the transaction and entity management
  1353.       code. nipc.library is now at 40.62.
  1354.     - The IP fragmentation code was buggy. It didn't handle the
  1355.       header length well and could possibly confuse things
  1356.       depending on the packet length. My previous checks of the
  1357.       fragmentation code did not take the packet length into
  1358.       account that well. I tried to do it right this time,
  1359.       though it is tricky stuff. I wonder what kind of MTU will
  1360.       break things again :-(. The reassembly code wasn't that great
  1361.       either. I added a few sanity checks that should help find
  1362.       further problems. I had also introduced semaphore deadlock
  1363.       potential into ReplyTransaction() in 40.60 which blocked nipc
  1364.       on random occasion. This was probably the cause for dying
  1365.       connections. A semaphore stayed locked where it should have
  1366.       been unlocked temporarily. Hmm. I really need to get the
  1367.       external IP/ICMP interface done if only to be able to test
  1368.       this stuff without major setup work. nipc.library is now at
  1369.       40.63.
  1370.     - On reassembly of fragmented packets, the length of the
  1371.       resulting packet was calculated from the size of the fragment
  1372.       nipc buffers, not from the sizes set in the packet headers.
  1373.       These can well differ with e.g. the A2065 where it somehow
  1374.       seems that the minimum data link buffer size returned is 50
  1375.       bytes for some reason unknown to the SANA specs. Depending
  1376.       on the amount of data transferred this really confused
  1377.       packet reassembly and resulted in garbage data for the
  1378.       registered IP protocols. I tested this (finally) with the
  1379.       a2065.device and noticed that both the C= a2065.device 2.16
  1380.       and the inet version 3.0 (which I happened to have access to
  1381.       at the time) have deadly CloseDevice() code. As I always run
  1382.       enforcer and mungwall this stuff is a nuisance at best. I
  1383.       think I need to create an HWG a2065.device. Hmpfh.
  1384.       nipc.library is now at 40.64.
  1385.     - I had an optimization in the reassembly code that rearranged the
  1386.       order of the fragment list to reduce seek times. Somehow this
  1387.       didn't work right. So I took it out for now. I'll have to
  1388.       investigate this problem, though. nipc.library is now at
  1389.       40.65.
  1390.     - The modification to the nipc buffer size for incoming packets
  1391.       with a buffer that is bigger than the actual packet is now
  1392.       done in a more logical place. This means that I don't have to
  1393.       check for data sizes later. I also left in a paranoia alert
  1394.       and a debugging kprintf. They should tell us about problems.
  1395.       Hopefully all of this finally fixes the 531 errors.
  1396.       nipc.library is now at 40.67.
  1397.     - More nipc changes. The S2R2 packet filter support did not
  1398.       take the new protocol registering scheme into account. It
  1399.       should now react to all registered IP protocols. Previously,
  1400.       it only knew about ICMP, RDP, and UDP. Using packet filtering
  1401.       has subtle consequences for very advanced setups. Only those
  1402.       packets will be handled that nipc understands itself. This
  1403.       means that you can't use gateway functionality in a mixed
  1404.       setup with packet filtering because "unknown" IP won't be
  1405. !!    accepted, handled or routed at all. Net result: For IP gateways,
  1406. !!    turn off packet filtering.
  1407. !!    The gateway flag is finally evaluated inside nipc IP routing.
  1408. !!    Basically, this means that Envoy based machines will only
  1409. !!    exhibit gateway functionality in IP routing now, if they are
  1410. !!    configured as gateway via Network Configuration. You have to
  1411. !!    specifically TURN ON gateway functionality compared to
  1412. !!    previous versions. If your machine isn't a gateway, i.e. if
  1413. !!    it doesn't have to forward packets for other machines on
  1414. !!    different physical networks, DON'T use it as gateway.
  1415.       IP options were not processed in the copy that was sent out,
  1416.       but in the original packet. This could have messed up things
  1417.       not only for broadcasts. Local IP packets were not
  1418.       necessarily handled correctly.
  1419.       Even the complete S2R2 configuration can be updated without a
  1420.       reboot now. On a configuration change, nipc.library will shut
  1421.       down all the devices and reopen those found in the
  1422.       configuration. Note that this also (obviously) means a loss
  1423.       of any additional routes you set. In any case it should no
  1424.       longer be needed to reboot an Amiga with Envoy now.
  1425.       This might mean that you better upgrade to a2065.device 3.2
  1426.       with my CloseDevice() fixes as the old a2065.device doesn't
  1427.       shut down correctly.
  1428.       Some SANA code used a questionable setup of device requests.
  1429.       This should be fixed now.
  1430.       Note that I left in a single paranoia kprintf at the moment.
  1431.       It will be activated if the calculated packet size can't be
  1432.       successfully matched to the buffer. This should never ever
  1433.       happen anymore, but who knows.
  1434. !!    You should better update nipc.library on all the machines
  1435. !!    now. There are incompatibilities. nipc.library is now at
  1436.       40.68.
  1437.     - It seems that EnvoyFileSystem is now ok. I took out the
  1438.       kprintf calls and bumped the version. EnvoyFileSystem is now
  1439.       at 40.59.
  1440.     - If you had a broken volume with an empty name on the server,
  1441.       this name was propagated through to the client for RMS
  1442.       imports. As it is not that easy to access a *specific* volume
  1443.       with a name of ":", volumes without a name string will now be
  1444.       called "Unnamed". filesystem.service is now at 40.55.
  1445.  
  1446.     - Ouch. I had messed up ResolveName() in nipc for named local
  1447.       queries. nipc crashed really bad if you specified the local
  1448.       host name. nipc.library is now at 40.69.
  1449.     - Blush. My smart grep for active kprintfs failed. I overlooked one
  1450.       in EnvoyFileSystem. It is removed (hopefully :^) now.
  1451.       EnvoyFileSystem is now at 40.60.
  1452.     - As you all know, envoyprint.device basically sucked. I
  1453.       thought that I could fix it, but I was wrong. I redid it in C
  1454.       now. It is not compatible to the original 2.0
  1455.       envoyprint.device, it should be compatible to the
  1456.       intermediate beta assembler envoyprint.device, and it should
  1457.       be good enough for the new printing system (if it ever sees
  1458.       the light of day). With a little bit of luck, I won't ever
  1459.       have to touch it again except for bug fixes.
  1460.       envoyprint.device is now at 40.8.
  1461.     - The print spooler was also pretty messed up. I
  1462.       repaired the remaining problems like left over spool files on
  1463.       timeouts. If the printer won't accept any data, the spooler
  1464.       is capable of aborting a job by asking the user. Currently,
  1465.       this message is still in english only as this code will
  1466.       disappear anyway, once the new spooler is done. So except for
  1467.       a few bug fixes, this spooler is not that different from
  1468.       V40.8. I intend to release this patched up printing system as
  1469.       a free patch on Aminet as the 2.0 printing system is very
  1470. !!    broken. Please test the current envoyprint.device and the
  1471. !!    printspool.service in a bare 2.0 setup. Tell me about
  1472. !!    conflicts with the old config tools and/or other parts
  1473. !!    of Envoy 2.0. PLEASE, PLEASE, PLEASE! printspool.service is
  1474.       now at 40.9.
  1475.     - The memory pool handling in nipc no longer depends on
  1476.       nipcbase contents. This simplifies maintenance a little bit.
  1477.       I reworked the library startup. Now there is no need any
  1478.       longer to maintain both an internal asm and C include file
  1479.       for the nipc base. Finally, the asm include could be retired.
  1480.       This solves one big maintenance headache for good. The
  1481.       remaining kprintf got commented out, too. On 32 bit machines
  1482.       nipc could be marginally faster with entity handling now.
  1483.       I fixed 32 bit structure alignment in one place internally
  1484.       that I overlooked earlier. nipc.library is now at 40.70.
  1485.  
  1486.     - A fix to both the EFS client and server. ACTION_CHANGE_MODE
  1487.       handling was really, really very broken.
  1488.       The EFS server connected comment and file name on doing ExAll
  1489.       emulation. It would create locks and file handles even if it
  1490.       did not have enough memory to remember them. There wasn't
  1491.       even a basic consistency check on passed in lock or
  1492.       filehandle values. For now I added major checking code that
  1493.       can be disabled once we are sure again that nipc or
  1494.       the client don't mess up the data passed to the server. Also
  1495.       there is new debugging timeout magic added to the server. If
  1496.       you break it with CTRL-D or if you change the configuration,
  1497.       it will contact all clients on the next heartbeat and
  1498.       disconnect those that don't answer. Together with the private
  1499.       magic CTRL-F to shut down the server, this should make
  1500.       hunting for leftover locks and filehandles a lot easier!
  1501.       filesystem.service is now at 40.57.
  1502.     - The client should name the error number now if it encounters
  1503.       an unknown nipc error on a connection failure.
  1504.       EnvoyFileSystem is now at 40.61.
  1505.     - GetHostName() will fail now if the name doesn't fit into the
  1506.       passed buffer. The resolver miscalculated a buffer length
  1507.       by one when querying the host name. Actually, the resolver
  1508.       did a few messy things and used internal data without
  1509.       semaphore protection. It should do the right thing now. And
  1510.       it shouldn't crash on 68K machines any longer with misaligned
  1511.       query data. As the resolver is used on reconnects, this might
  1512.       explain some of the spurious problems we had. Some work spent
  1513.       on the S2R2 low level code. It used different types of
  1514.       IORequests for a single device. The code should behave much
  1515.       more straightforward now which should help debugging future
  1516.       problems. Ralph might like this one again. His observation
  1517.       that something very bad must have happened during the change
  1518.       40.67->40.68 was right. I never doubted it. It took me quite
  1519.       a while to figure out the problem though. It was an obvious
  1520.       bug that should have jumped in my face the minute I looked at
  1521.       the code. Under certain circumstances the packet filtering
  1522.       code caused a semaphore to be used. It is obviously not wise
  1523.       to use semaphores in interrupts. I did not realize it because
  1524.       there is LOTS of valid code using semaphores and I didn't
  1525.       notice the interrupt dependency. Ouch. The workaround means
  1526.       that the packet filtering code will no longer filter unneeded
  1527.       packets all the time. Sometimes it will let unknown packets
  1528.       through. Actually, I am not too fond of the packet filtering
  1529.       idea in S2R2 anyway. A complex protocol stack like nipc will
  1530.       be able to support arbitrary protocols, which means that
  1531.       usually some protocol list must be scanned to find out which
  1532.       packets to filter. Obviously some kind of arbitration is
  1533.       necessary here in the filtering code and most certainly I
  1534.       don't think that Disable() is appropriate on the protocol
  1535.       stack level to scan a list. This means that the whole packet
  1536.       filtering idea is flawed in terms of design IMHO as it can be
  1537.       used only for dumb stacks handling a known simple set of
  1538.       protocols. Obviously I could rewrite the code to keep a
  1539.       somewhat simple static array of packet types to be scanned
  1540.       (in addition to the list) that is replaced only during a
  1541.       Disable() when a protocol is registered or freed, but I
  1542.       really feel bad about that. I don't like Disable() even for a
  1543.       simple memory update. If you want to convince me of doing
  1544.       this because you think the filtering benefit is worth it,
  1545.       talk to me. nipc.library is now at 40.73.
  1546.     - The UDP checksum algorithm could produce a "no checksum"
  1547.       result for certain packet types. UDP also wouldn't close
  1548.       all open connections on shutdown which was not very black box
  1549.       at all. nipc.library will start throwing ICMP messages around
  1550.       now. I also added basic general IP based protocol support.
  1551.       This means that anyone can set up and register any IP
  1552.       based protocol with nipc now and take advantage of the
  1553.       complete IP layer. I can almost completely black box the
  1554.       internal protocols now and kill global interactions. Great!
  1555.       The "only" thing I still have to do now to do debugging on
  1556.       the packet level is to write a monitor protocol, simply
  1557.       displaying all the IP packets that are coming in. I still
  1558.       haven't decided on a SNMP interface though. This is very
  1559.       tricky stuff. It would sure help to have this though. At this
  1560.       time, nipc will do a kprintf for every ICMP message
  1561.       requested. Actually ICMP messages shouldn't be sent that
  1562.       often and right now it may be a good indication if we have
  1563.       any problems. One ICMP test I did was to deactivate a device
  1564.       packets were routed over with Network Configuration while a
  1565.       transfer was active. nipc took it well and started to use
  1566.       ICMP. I love dynamic configuration. It is interesting to
  1567.       observe how nipc gets more and more complex while getting
  1568.       less and less complicated at the same time. Well, it is
  1569.       getting bigger. nipc.library is now at 40.75.
  1570.  
  1571.     - ICMP had a wrong protocol number as I mistyped an identifier.
  1572.       So nipc wouldn't recognize any ICMP messages. IP fragments
  1573.       are no longer handled via the S2R2 device structures. They
  1574.       are now an integral part of the IP layer. Even if a packet
  1575.       definitely could not be reassembled, the reassembly code
  1576.       would loop through all the fragments. Raised the fragment
  1577.       timeout to 15 seconds. Comer uses 60 in his simple example
  1578.       code, but he also uses limited buffering. I don't want to
  1579.       flood nipc. The RDP code now doubles the timeout on packet
  1580.       retries with an upper limit of currently 20 seconds. There
  1581.       was a tiny hole in FindEntity(). With just the right timing,
  1582.       it wouldn't find an entity that was perfectly well and alive.
  1583.       RDP will no longer kill a connection if it was unable to send
  1584.       data due to lack of memory. It is much less expensive to get
  1585.       more resources again than to reestablish a connection. And
  1586.       memory is needed to do the latter anyway. RDP used to rely on
  1587.       IP fragmentation for fast networking HW by sending packets of
  1588.       about 3*MTU. As loss of a single IP packet means
  1589.       retransmission of 3 IP packets then due to the loss of the
  1590.       respective RDP datagram, I took this "feature" out.
  1591.       Fragmentation is expensive in terms of memory usage and CPU
  1592.       load anyway as buffers need to be copied. RDP will no longer
  1593.       use fragmentation! The RDP round trip time and connection
  1594.       speed estimation was garbage. This may be part of the cause
  1595.       why sometimes connections got lost. The S2R2 code will no
  1596.       longer accept devices with a MTU value less than 100 or a BPS
  1597.       value less than 1000. These are silly devices where quite a
  1598.       few things wouldn't work anyway. The transaction and RDP
  1599.       timeout setup was garbage, too. It now uses some correctly
  1600.       calculated values that actually have some meaning in real
  1601.       life. The old code screwed up timeout handling to no end,
  1602.       It even generated negative timeouts. The new code is
  1603.       basically what TCP does. It is modified for differences of
  1604.       the RDP implementation, though. We use Karn's algorithm when
  1605.       the connection is active. For establishing a connection,
  1606.       there is a fixed timeout and a few retries. The new thing is
  1607.       that RDP tries to always do a correct roundtrip time
  1608.       estimate. The result is that the transaction timeouts (which
  1609.       have always been adjusted to compensate for the transmission
  1610.       delays) should now finally be accurate. If the load on the
  1611.       net increases, nipc should no longer fiddle around with
  1612.       roundtrip times that were calculated on connection startup
  1613.       only. We have an adaptive timeout in RDP now that should make
  1614.       reconnects a lot less common. This is very hard to test for
  1615.       me though. I'd need a setup that would emulate a long delay
  1616.       on the cable. Tricky to do in SW. Maybe someone using Envoy
  1617.       with a dial up connection can shed some light on the results?
  1618.       These extra computations may slow down Envoy on slow
  1619.       machines. On an A3k/25-A4k/WE040/40 Ethernet setup, I can't
  1620.       see any noticable diskspeed difference. On packet
  1621.       loss you should still see a few kprintf's. nipc.library is
  1622.       now at 40.76.
  1623.     - If you passed an ACTION_CREATE_DIR with a ZERO baselock, an
  1624.       empty name, and just the right type of garbage in dp_Arg3 to
  1625.       the EFS client, it would do a certain amount of
  1626.       ACTION_LOCATE_OBJECT specific processing. This in result
  1627.       could produce an internal lock that would not make any sense.
  1628.       EnvoyFileSystem is now at 40.62.
  1629.     - I increased the lock and filehandle check level in the
  1630.       filesystem server again. It will try to post recoverable
  1631.       alerts now, if it encounters bad values. Maybe this helps
  1632.       locating these spurious server crashes. filesystem.service is
  1633.       now at 40.58.
  1634.     - Owner and Group will no longer print an error message twice
  1635.       or return ok for errors. Owner and Group are now at 40.3.
  1636.     - When reworking the user/group packets in the EFS server, I
  1637.       messed up some IoErr() values. Things should be back to
  1638.       normal now. filesystem.service is now at 40.59.
  1639.  
  1640.     - Fixed up the Service docs and added a new Tag
  1641.       SVCAttrs_FullService to be able to tell if a service supports
  1642.       SetServiceAttrsA() and AttemptShutdown(). The recompiled
  1643.       services.library is now at 40.8.
  1644.     - As of this moment I will no longer support assembly includes
  1645.       for Envoy. In the quest for portability, assembly includes
  1646.       simply will get in the way. They are also a dangerous
  1647.       maintenance hassle that already got in the way a few times.
  1648.     - After a lot of thinking I found out that the internal buffer
  1649.       management in nipc had a few holes that required a major
  1650.       check of all the involved code. There were some strange
  1651.       things to fix and it caused me some grief to rework this, but
  1652.       it should be stable again now. I am not sure if it is the
  1653.       a2065.device yet, but I had the effect that the very first
  1654.       packet written out to the device after a reload of
  1655.       nipc.library was lost. This caused a slow RDP startup. I
  1656.       worked around this for now by simply sending the RDP startup
  1657.       packet for a connection twice. This doesn't hurt RDP and
  1658.       helps startup performance by a few seconds even if a driver
  1659.       has a problem. Obviously the driver causing this should be
  1660.       fixed though. ICMP should process redirect messages now.
  1661.       Tricky to test. The UDP interface has been reworked and is
  1662.       going public about now. All of the buffer stuff has caused a
  1663.       major source change. Please test for memory leaks and
  1664.       mungwall problems! nipc.library is now at 40.77.
  1665.     - Major 2065.device rework. It did some very very nasty things.
  1666.       I hope I got them fixed now. As a side effect, interrupt load
  1667.       may have decreased. PLEASE TEST THIS WITH MULTIPLE PROTOCOL
  1668.       STACKS! This internal version is now called 3.5 to avoid
  1669.       version problems with the Interworks version 3.2.
  1670.       It supports the New Style Device standard now.
  1671.  
  1672.     - nipc should no longer rely on initial notification for its
  1673.       prefs file. Tss. Is there is still a fs around not supporting
  1674.       notification? :^) The sfd file for nipc is fairly complex by
  1675.       now due to the enw and still private function calls. It
  1676.       turned out that the SAS/C SLINK can only handle simple FD
  1677.       files, so nipc will no longer use SLINK, but generate a
  1678.       vector table via a simple ANSI C tool "makevectors" now. This
  1679.       is much more portable anyway. nipc.library is now at 40.78.
  1680.     - The EFS server did not set the return codes for packets
  1681.       correctly for ACTION_END and ACTION_FREE_LOCK. Actually it
  1682.       did not set quite a few return codes correctly, related to
  1683.       lock and file handle checking. I must have been drunk while
  1684.       writing that code. This should have fixed the WB copy
  1685.       "Required arg missing" problem for good. It is also a major
  1686.       rework that needs lots of testing. I also fixed a few bugs
  1687.       with packet arguments that I introduced for a future V43 OS
  1688.       (which may never come). The server will also make a lot less
  1689. !!    assumptions about FileHandle internals now. The User/Group ID
  1690. !!    conversion packets have consistent return values now, even
  1691. !!    though they are a little strange for a conversion to an id. I
  1692.       decided that probably nothing uses these packets except Envoy
  1693.       itself, so I could safely fix them.
  1694.  
  1695.         #define ACTION_Dummy                20000
  1696.  
  1697.         // res1: ID if res2 == 0; res1: invalid if res2 != 0 (res2 == error indicator)
  1698.         #define ACTION_USERNAME_TO_UID      (ACTION_Dummy+0)
  1699.         #define ACTION_GROUPNAME_TO_GID     (ACTION_Dummy+1)
  1700.  
  1701.         // res1: DOS bool, res2: error if res1 == DOSFALSE
  1702.         #define ACTION_UID_TO_USERINFO      (ACTION_Dummy+2)
  1703.         #define ACTION_GID_TO_GROUPINFO     (ACTION_Dummy+3)
  1704.  
  1705.       Don't try to define new packets around these values or any
  1706.       other values. These packet numbers are "old" C= numbers that
  1707.       finally have a usable definition. They are not an invention
  1708.       by IAM. There also was a subtle bug in ACTION_RENAME
  1709.       handling. If dp_Arg3 was ZERO, a wrong volume descriptor
  1710.       might have been used to find the correct base lock. As the
  1711.       whole return value system has been reworked, it may be
  1712.       extremely wise to do some decent testing! Notification for
  1713.       file creation did only work for secure mounts well. The
  1714.       securoity checks for file creation/open had holes. You could
  1715.       access a file even if you did not have access permission for
  1716.       its immediate parent directory. Security for ACTION_PARENT
  1717.       didn't really work at all. It was possible to lock
  1718.       directories without E permission. It checked the source
  1719.       lock instead of the result. ACTION_SET_COMMENT/DATE checked
  1720.       the directory lock, not the object they were accessing.
  1721.       ACTION_FH_FROM_LOCK accessed the lock after creating the
  1722.       filehandle. For this packet I am not completely sure how to
  1723.       handle security. In fact the whole security handling of
  1724.       many packets is debatable. What should be checked and why
  1725.       in each case? There are grey areas IMHO or I am confused.
  1726.       The big problem is directory permissions. How should they
  1727.       be treated. What e.g. about parent permissions? Afterall,
  1728.       AmigaOS is not Unix. What do you think? This is the time to
  1729.       voice your opinions and to look hard at security.
  1730.       filesystem.service is now at 40.61.
  1731.     - Finally, the EFS server should shut down pending mounts
  1732.       correctly for clients that have been turned off correctly.
  1733.       During the check, the server may pause for a few seconds.
  1734.       This is unlikely to change, but persistent probing of dead
  1735.       clients which bogged down the server should no longer occur.
  1736.       filesystem.service is now at 40.62.
  1737.     - Owner and Group support the consistent UID/GID conversion
  1738.       now. Previously they wouldn't have handled a zero Id. Owner
  1739.       and Group are now at 40.4.
  1740. !!  - A general note: Now that nipc generates ICMP messages, it is
  1741. !!    very unwise to use it along any TCP/IP stack with the same
  1742. !!    IP/ARP packet types. The stacks may confuse each other. Just
  1743. !!    bump the Envoy types by one if you are using TCP/IP on the
  1744. !!    same line.
  1745.  
  1746.     - There was a failure path in the EFS server where the
  1747.       ACTION_SEEK primary error result would not have been set to
  1748.       -1. filesystem.service is now at 40.63.
  1749.     - The EFS client returned wrong error codes for C:Lock'ed
  1750.       mounts for certain packets. Error handling should be safer
  1751.       here now as it is unified in the client. ACTION_DISK_INFO
  1752.       will no longer fail, even if the network is down or goes down
  1753.       during the request. If you find a failing ACTION_DISK_INFO,
  1754.       scream at me with a bug report. In case the network is down,
  1755.       a fake InfoData structure will be filled with ID_VALIDATING,
  1756.       ID_NO_DISK_IN_DRIVE. id_NumSoftErrors will contain the number
  1757. !!    of reconnects for this mount. This should fix the temporary
  1758. !!    WB lockups caused by lost server connects. Note that an
  1759. !!    ACTION_DISK_INFO will no longer trigger a reconnect! This is
  1760.       intentional. The client used to complain on unconnected locks
  1761.       and file handles left over from a previous connection.
  1762.       Typically, this didn't occur as all of them were reconnected
  1763.       right after the connection was reestablished. It could happen
  1764.       though if some part of the reconnect actions failed for
  1765.       whatever reason. The client will now try to reconnect these
  1766.       handles once again before complaining on them. Cleaned up and
  1767.       unified some packet handling. EnvoyFileSystem is now at 40.63.
  1768.     - nipc had a hole in its shutdown code that could lead to
  1769.       unexpected crashes. In entity handling, there was a semaphore
  1770.       lock messup which could have caused a deadlock for unreliable
  1771.       connections. The RDP timeout values and handling were not
  1772.       exactly great. UDP had a deadly problem with any ICMP packets
  1773.       due to two missing lines of code. In ICMP handling, a break
  1774.       statement was missing, even though that bug didn't have any
  1775.       adverse consequences at all. ICMP echo didn't. If someone
  1776.       called DeleteEntity() for an Entity that had been found by
  1777.       some remote site, the remote site was never notified that the
  1778.       Entity got shut down. Actually, to be correct, the problem
  1779.       was that the Entity was always marked for a delayed delete
  1780.       without even trying a shut down. This means that clients
  1781.       could "hang" on long dead entities for a while even
  1782. !!    though the HW was ok. MAJOR RDP REWORK. As it turned out RDP
  1783. !!    still wasn't RFC conforming at all. This release of nipc is
  1784. !!    most likely completely incompatible to previous versions.
  1785.       Especially the connection startup was messy. When shutting
  1786.       down, nipc will complain with a recoverable alert now if
  1787.       someone forgot to LoseEntity() his local stuff. On the way I
  1788.       produced and fixed a few deadlock bugs. It would be great if
  1789.       I could do RDP on a different context and have transaction
  1790.       handling run on its own context. I would only pass messages
  1791.       with data then and I wouldn't have those semaphore
  1792.       interactions. Unfortunately, doing it like this is expensive
  1793.       due to context switching. It seems that nipc and RDP are
  1794.       reliable again. I have to write this at this very moment
  1795.       while I copy quite some amount of data from the A4kT to the
  1796.       A3k to trigger any bug again. If nothing shows up, this may
  1797.       be a candidate for beta testing again. Entity shutdown via
  1798.       either DeleteEntity() or LoseEntity() had a few holes. It
  1799.       should be safe now. nipc.library is now at 40.80.
  1800.     - If you find any typos in the notes above, it is most likely
  1801.       the fault of the female german person tickling me here in
  1802.       front of my machines.
  1803.  
  1804.     - With the major EFS server changes, I broke
  1805.       ACTION_FH_FROM_LOCK. A line of code was missing. The
  1806.       filesystem.service is now at 40.64.
  1807.     - The client had a problem with delayed root locks. On
  1808.       resolving them, it could attribute them to the wrong volume
  1809.       if a reconnect occurred in the meantime. In low memory
  1810.       situations, the client could have returned very strange
  1811.       results on ExAll()'s. A general problem will remain for
  1812.       people exporting RAM:. If the server reboots, it will create
  1813.       a new RAM: with a new volume date. This looks like a
  1814.       different volume to the client, so the client will never be
  1815.       able to reestablish that mount correctly as expected when
  1816.       you have pending delayed root locks or obtain a delayed root
  1817.       lock after the reboot before the client noticed it. Nothing I
  1818.       can do about this. The simple fix is not to export RAM: or
  1819.       any other "volatile" volume for anything of importance if
  1820.       server reboots are likely. EnvoyFileSystem is now at 40.64.
  1821.  
  1822.     - nipc.library supports S2R3 now for incoming data. At this
  1823.       time I decided not to put in code for outgoing data, as the
  1824.       outgoing data buffers can have a format that may be quite
  1825.       warped. The overhead to decide on the buffer format would
  1826.       currently be excessive IMHO. I may add a simple check later
  1827.       when it turns out that the current stuff works well. The new
  1828.       event system didn't work at all. I was too hasty in a few
  1829.       places when writing the code. It should be ok now.
  1830.       Woah! While doing the changes for the new internal RDP
  1831.       interface in transaction handling, a line of code got lost.
  1832.       The trans_Error field was never set up for returning
  1833.       transactions anymore. Which means that _everything_ was
  1834.       returned as successful that didn't fail locally. This
  1835.       shoudl also fix the users/groups editors "waiting" forever
  1836.       when used with an AccountsServer. They simply collected
  1837.       one user over and over and ate up memory and CPU time. You
  1838.       are asking why the rest of the system worked fairly well
  1839.       anyway? It seems that networks and the EFS server are more
  1840.       stable than we think they are. There was also a problem in
  1841.       setting up incoming transactions. trans_RespDataActual wasn't
  1842.       set to 0 (which caused extra return traffic on the reply) and
  1843.       the trans_RespDataLength wasn't correct for magic "in place"
  1844.       transactions where request and response share the same
  1845.       buffer. I am using this beta now to test the upcoming SAS/C
  1846.       6.57 patch, too. A few warnings 317 hit me which was a good
  1847.       thing. A line of code was missing that messed up correct
  1848.       subnet matching. nipc.library is now at 40.82.
  1849.  
  1850.     - Cough, cough. trans_RespDataActual may not be set to 0. There
  1851.       is the silent assumption inside nipc and user code that the
  1852.       buffers will be transmitted completely if the Actual values
  1853.       are not touched by the user. In effect, you are reducing the
  1854.       amount of transmitted data if you set the Actual values to
  1855.       less than the respective buffer size. Default has and will
  1856.       now always be full buffer size. This is also documented in
  1857.       the autodocs now. Another lesson learned the hard way.
  1858.       nipc.library is now at 40.83.
  1859.     - EnvoyFileSystem had a small hole. If a reconnect happened
  1860.       while an ExAll()/ExNext() was in progress, the server would
  1861.       get an invalid lock identifier which could have really
  1862.       confused it and the client would abort early. EnvoyFileSystem
  1863.       is now at 40.65.
  1864.     - EnvoyFileSystem had a bigger hole, too. If an internal
  1865.       ExAll()/ExNext() was in progress and some error happened,
  1866.       the original packet would never get replied to. This, and a
  1867.       stupid variable usage bug that turned up due to the fix in
  1868.       40.65 made examine stuff really unsafe. EnvoyFileSystem is
  1869.       now at 40.66.
  1870.  
  1871.     - Recent work on nipc.library made it crash on plain 68000
  1872.       machines due to a violation of data alignment restrictions.
  1873.       I also added some minor caching for IORequests which should
  1874.       help performance. I also added a kprintf for any SANA I/O
  1875.       error that I get for now. This should help debug the backup
  1876.       freeze problem. nipc.library is now at 40.85.
  1877.  
  1878.     - Major overhaul of envoy.library in preparation for quite a
  1879.       few necessary tool changes. Stack usage and GUI compatibility
  1880.       need to be checked! envoy.library is now at 43.2.
  1881.     - Again RDP problems. Not with data management, but with
  1882.       semaphore locking issues. We had several unprotected areas.
  1883.       This in turn could have affected transferred data. Also RDP
  1884.       should no longer try to work with closed connections that
  1885.       much. A major RDP interface rework has been done to fix these
  1886.       problems. Quite a few LOC have been shuffled around
  1887.       without really affecting the protocol implementation
  1888.       itself. MAJOR MAGIC INSIDE. Please let me know about
  1889.       deadlocks and efficiency changes. The icmp and S2 debugging
  1890.       kprintf's are still in there. nipc.library is now at 40.86.
  1891.  
  1892.     - Found some problems in the requester layout code and added
  1893.       some gadtools handling functionality that I need for easier
  1894.       GUI creation. Now this stuff doesn't have to be duplicated
  1895.       all over the place. envoy.library is now at 43.3.
  1896.     - The Accounts Server had some problems. Group management could
  1897.       mess up the user id of the admin user. Finally it shouldn't
  1898.       be possible any longer to kill the last admin. It shouldn't
  1899.       be possible any longer to have duplicate group or user names.
  1900.       Accounts Manager is now at 37.19.
  1901.  
  1902.     - The major changes in envoy.library caused two things to be
  1903.       overlooked. The requesters didn't open active anymore and had
  1904.       no close gadget. The GUI tries to be smarter than Intuition
  1905.       now about window borders to be compatible to Intuition hacks.
  1906.       envoy.library is now at 43.4.
  1907.  
  1908.     - More changes to the GUI code. There were bugs in unused code
  1909.       parts for calculating sizes. It didn't get along well with
  1910.       font setups that gave reasonable results but were smaller
  1911.       than topaz 8 in either direction. I also unified lots of code
  1912.       in the requesters which did basically the same thing. This
  1913.       code should be darn smart about the layout now. Hopefully.
  1914.       UGREQ_OptimWindow was not handled. Major rework inside to
  1915.       make the GUI code more accessible to the other Envoy
  1916.       tools. The envoy.library is now at 43.6.
  1917.  
  1918.     - There was a deadlock in the RDP locking code in nipc.library.
  1919.       I revisited the whole locking scheme. I should be on the
  1920.       right track now. nipc.library is now at 40.87.
  1921.     - Found some more problems in a2065.device. a2065.device is now
  1922.       at 3.7.
  1923.     - Found some more problems in a2060.device. These were stupid
  1924.       to the point of embarrassment, though they didn't affect SANA2
  1925.       use of the device. a2060.device is now at 40.9.
  1926.     - The Users preferences use the new GUI engine now. Users is
  1927.       now at 37.20.
  1928.     - The Group preferences use the new GUI engine now. They
  1929.       should also handle the group list correctly now for a late
  1930.       login. Groups is now at 37.16.
  1931.     - envoy.library needed a further enhancement to support the
  1932.       new Services Configuration. The default pubscreen is now
  1933.       inherited from a specified optim window if no other screen is
  1934.       specified. This should fix general pub screen behaviour for
  1935.       most cases. A ScreenToFront() and WindowToFront() is done if
  1936.       appropriate, too. envoy.library is now at 43.8.
  1937.     - Reworked Services Configuration to use the new GUI layout
  1938.       code. Services Configuration is now at 37.16.
  1939.     - All new Filesystem Imports. Same functionality, better looks.
  1940.       Exports is a little more tricky to do. Filesystem Imports is
  1941.       now at 40.18.
  1942.  
  1943.     - Due to lousy autodocs and my acceptance of the word as is,
  1944.       some code in envoy.library used a V39 only graphics.library
  1945.       function. This and a couple of gadget size calculations are
  1946.       fixed now. envoy.library is now at 43.10.
  1947.     - nipc.library had a ReleaseSemaphore call that shouldn't have
  1948.       been there. nipc.library is now at 40.88.
  1949.  
  1950.     - Filesystem Imports no longer tells us about successful
  1951.       connections. We can see that anyway and are told about
  1952.       errors. Filesystem Imports is now at 40.19.
  1953.  
  1954.     - Filesystem Imports now has a NOSECURITY tooltype and command
  1955.       line option. This will suppress the login requester and makes
  1956.       maintenance of networks without security easier. Currently,
  1957.       for mounts that you want to do once in a while that should
  1958.       not be automounted, create a permanent mount and drag the
  1959.       created mount icon from DOSDrivers or (WBStartup for 2.0
  1960.       systems) to your favourite storage place. A single click will
  1961.       give you the needed mount then. FSI is at 40.20.
  1962.     - A long overdue change to nipc.library was needed to support
  1963.       envoy.library better. Frankly, this got on my nerves for a
  1964.       long, long time. Now I fixed it. NIPCInquiryA() can now be
  1965.       aborted early in a fairly decent way. In anticipation of
  1966.       a general feature freeze, the version has been bumped.
  1967.       nipc.library is now at 43.1.
  1968.     - The envoy.library host requester no longer waits. Yeah!
  1969.       Well, actually it waits 5 instead of 2 seconds now for a
  1970.       response, but you don't have to wait. Some enhancements to
  1971.       the GUI code in anticipation of the needs for reworking NIPC
  1972.       Configuration. The login request will fetch ENV:USERNAME if
  1973.       available and no user name has been given. If a user name is
  1974.       there but no password, the pw will be activated for entry.
  1975.       envoy.library is now at 43.12 and requires nipc.library V43.
  1976.     - Filesystem Imports is done. This was a tricky one, though
  1977.       NIPC Configuration will be very tricky compared to this one.
  1978. !!    The prefs format and the default file name have changed. Do a
  1979. !!      "Filesystem Exports FROM ENV:Envoy/efs.config SAVE"
  1980. !!    This should convert the data to the new format. Note that you
  1981. !!    also need an updated filesystem.service to use this!
  1982.       Filesystem Exports is now at 40.21.
  1983.     - The new prefs code fell victim to a intuition/gadtools refresh
  1984.       bug. It is unwise to fiddle around with gadtools gadgets
  1985.       _during_ a refresh as it turns out. The code did pretty
  1986.       much exactly that in a nonobvious way. Somewhere, there is a
  1987.       deadlock possibility. I took this opportunity to bump the
  1988.       versions. Filesystem Imports, Filesystem Exports, and
  1989.       Services Configuration are now at 43.1.
  1990. !!  - filesystem.service now supports the new prefs file. To avoid
  1991. !!    support problems, the old file is no longer read.
  1992. !!    filesystem.service is now at 43.1.
  1993.  
  1994.     - Major nipc.library rework. There were still serious problems
  1995.       in the locking scheme. I really hate this. ~120KB of sources
  1996.       are affected and have to be handled each time I touch any of
  1997.       that code. I redesigned the entity shutdown code to be a lot
  1998.       less warped. Previously, there were _tons_ of nested
  1999.       semaphore calls on multiple contexts for all the entity
  2000.       handling. Now we can count them in kilograms and I defused
  2001.       even more explosive code. Incidentally, this rework seems to
  2002.       have made nipc noticably faster. Ha, as if this would make
  2003.       it more stable :-/. I put in more paranoia alerts. Let me
  2004.       know if you encounter any of them! ALL THIS NEEDS ***HEAVY***
  2005.       TESTING! I also spent about two days tracing and debugging
  2006.       RDP packets to be sure that it works as expected. I put in
  2007.       detection code to find and kill dead passive ends of a
  2008.       connection and killed a paranoid call that resetted a
  2009.       conenction twice for no reason. There is no active probe by
  2010.       nipc to test potentially dead active ends because this would
  2011.       really mess up dial up on demand. I heard that at least one
  2012.       person is trying to do that. Oh well, I originally planned to
  2013.       get Network Configuration in shape this weekend.
  2014.       BTW, this entry crosses the 2k line in my history file!
  2015.       nipc.library is now at 43.3.
  2016.  
  2017.     - I broke GetHostName() for 43.3. Locking was in the wrong
  2018.       place. Well, actually, GetHostName() had another flaw that
  2019.       I didn't cause, too. I won't tell.
  2020.       nipc.library is now at 43.4.
  2021.  
  2022.     - I broke even more. Rework of FindEntity(). Fix of the
  2023.       dead connection detection. Clarification to the
  2024.       WaitTransaction() autodoc. Useless paranoia code
  2025.       for broken BeginTransaction() calls replaced with
  2026.       dead end alert. nipc.library is now at 43.6.
  2027.     - envoy.library missed some locking calls. For refresh support
  2028.       of parent windows, I reactivated the stone age
  2029.       (incomplete and broken!) callback support in an ASL like
  2030.       manner. envoy.library is now at 43.14.
  2031.     - Services Configuration displayed trash when removing the last
  2032.       service. Services Configuration is now at 43.2.
  2033.     - Filesystem Imports now uses a mode cycle gadget. It also supports
  2034.       a new mode "Storage", which mounts the drive and puts a permanent
  2035.       icon into DEVS:Storage/DOSDrivers. Catalog update required.
  2036.       "Temporary" as default choice is intentional.
  2037.       It also refreshes its window while the envoy.library requests are
  2038.       open. Better now, Olaf? Filesystem Imports is now at 43.3.
  2039.     - I think I stumbled over the "no write after open" problem
  2040.       with the client during testing. It was not reproducible
  2041.       though. I don't know yet what it may be or if it is the
  2042.       client or some side effect, but I found very strange error
  2043.       messages in the client along the way. The client has been
  2044.       updated to put out better error messages for some connection
  2045.       problems, which may help locating problems. Previously it
  2046.       complained e.g. that the server refused data when that very
  2047.       data didn't even leave the client due to nipc connection
  2048.       problems. A catalog update is required. EnvoyFileSystem is
  2049.       now at 43.1.
  2050.  
  2051.     - Users was really broken. You could create users with an empty
  2052.       name, a checkbox gadget was internally used as listview due
  2053.       to a wrong define, it reconnected to the server pretty much
  2054.       all the time, and refresh was broken. Users is now at 43.1.
  2055.     - Groups pretty much had the same problems as Users. :-/
  2056.       Both Groups and Users could be really cleaned up big time
  2057.       inside, as it is still lots of old code in the new prefs
  2058.       wrapper. This does not seem to be the time to do this,
  2059.       though. Groups is now at 43.1.
  2060.  
  2061.     - Angela found a bug in Filesystem Imports while clicking
  2062.       around not just a little bit. For temporary mounts, a trashed
  2063.       buffer would be used to lock the volume. Filesystem Imports
  2064.       is now at 43.4.
  2065.     - Angela found a few more bugs. EnvoyFileSystem did not take
  2066.       ACTION_INHIBIT well. More precisely, it didn't handle other
  2067.       packets well while inhibited. I did not check it with the
  2068.       RCS archives, but I suspect a source line got lost during
  2069.       editing sometime ago. The EFS client also did not take
  2070.       ACTION_DIE well with ACTION_INHIBIT being active. The Info
  2071.       results if the exported _device_ is inhibited
  2072.       now make more sense. Note that ACTION_INHIBIT
  2073.       in the EFS client is for debugging, not for
  2074.       using a disk editor. EnvoyFileSystem is now at 43.3.
  2075.     - Angela found another bug. Filesystem Exports did not refresh
  2076.       gadgets correctly when restoring the last saved prefs.
  2077.     - Filesystem Exports did not refresh the main window when
  2078.       the user requester was active. Filesystem Exports is now
  2079.       at 43.3.
  2080.     - I took out the remaining kprintf in nipc.library. I also made
  2081.       two internal routing functions public due to a very reasonable
  2082.       request by one knowledgeable Envoy user. nipc.library is now
  2083.       at 43.7.
  2084.     - Another one. Users did very strange things with the gadgets
  2085.       up to the point of not doing with the user data what it
  2086.       should have. Angela pestered me about the awful password
  2087.       handling. This led to me giving in and changing both Users and
  2088.       envoy.library to support a general password change requester.
  2089. !!    If a user _needs_ a password, s/he must chose one of at least
  2090. !!    six characters now that is not equal to the previous one.
  2091.       Users relies on at least envoy.library 43.15 now. This isn't
  2092.       a problem as previous V43 versions are not publically
  2093.       released anyway. Users is now at 43.2.
  2094.     - envoy.library changed again. Quite some rework inside to
  2095.       support the new password requester. The new password
  2096.       requester also optionally checks that a password entered is
  2097.       >=6 characters long and not equal to the old password. I wish
  2098.       I would finally get around to do something about Network
  2099.       Configuration, which may require more changes to envoy.library.
  2100.       envoy.library is now at 43.15.
  2101.     - In preparation for install changes, the Accounts Manager needed
  2102.       some rework. It will always use the next free user/group id
  2103.       now when allocating a user or group. While this could
  2104.       cause "stale" id's to be used, id's won't run out. A little
  2105.       unixish behaviour here. Accounts Manager is now at 43.1.
  2106.     - Services Configuration got new "majik" options now for me to
  2107.       be able to kill the little BuildSMPrefs hack. The CFGFILE and
  2108.       CFGLINE options take similar arguments compared to
  2109.       BuildSMPrefs, but can do more. With CFGLINE, you can specify
  2110.       a single configuration line as listed below. With CFGFILE,
  2111.       you can handle a whole bunch of them, including empty lines.
  2112.       Note: To discriminate between different lines, the first
  2113.       argument of each template must not be moved from its place or
  2114.       aliased. Other than that, the templates are pretty much self
  2115.       explaining. There is hardly any error checking, as THIS STUFF
  2116.       IS NOT FOR CASUAL USE!
  2117.  
  2118.         "ClearPrefs/S"
  2119.  
  2120.         "Service/K/A,PathName,Active/S,Inactive/S,Remove/S"
  2121.  
  2122.       Services Configuration could have lost memory to disk objects
  2123.       previously. It also allowed duplicate entries and handled the
  2124.       entries on the services list according to the current moon
  2125.       phase. Services Configuration is now at 43.3.
  2126.     - I added the CFGFILE and CFGLINE options to Network
  2127.       Configuration, too. Now I am able to rework the installation
  2128.       a little bit. "=Dummy" as first arguments are dummies for
  2129.       template recognition. THIS STUFF IS NOT FOR CASUAL USE!
  2130.  
  2131.         "ClearPrefs/S"
  2132.  
  2133.         "HostInfo/K/A,RealmName/K,RealmIP/K,Owner/K"
  2134.  
  2135.         "RealmInfo=Dummy/S,RealmName/K,RealmIP/K,UseRealmServer/S,"
  2136.             "NoUseRealmServer/S,RealmServer/S,NoRealmServer/S"
  2137.  
  2138.         "FlagConfig=Dummy/S,Owner/K,Gateway/S,NoGateway/S"
  2139.  
  2140.         "DevInfo/K/A,IPAddr,IPType/N,ARPType/N,SubMask/K,"
  2141.             "Unit/K/N,Filter/S,NoFilter/S,Active/S,Inactive/S,Remove/S,"
  2142.             "CheckUnit/S,HardAddr/K,"
  2143.             "NoHardAddr/S,NoIPType/S,NoARPType/S,NoSubMask/S"
  2144.  
  2145.         "RouteInfo=Destination/K/A,Gateway,HopCount/N,Remove/S"
  2146.  
  2147.         "LocRealm/K/A,RealmAddr,Remove/S"
  2148.  
  2149.         "RemRealm/K/A,Server,Remove/S"
  2150.  
  2151.       Note that what you are getting here is an intermediate
  2152.       Network Configuration that still has the old GUI but tons and
  2153.       tons of preparations for it inside. Without it, I can't send
  2154.       out a full archive, though.
  2155.       Network Configuration is now at 43.1.
  2156.     - Woah. Services Manager fiddled directly with the Library base
  2157.       of services.library. it also had some holes allowing for
  2158.       messy fiddling with the services lst. Services Manager needs
  2159.       services.library V43 and is now at 43.1.
  2160.     - services.library had similar holes and needed some more magic
  2161.       to support the manager. I also cleaned up the includes a bit.
  2162.       services.library is now at 43.1.
  2163.     - Some basic rework for the install script. It uses some
  2164.       features of the V43 installer now, does not need the prefs
  2165.       hacks any longer, updates the EFS config file if needed and
  2166.       has some minor improvements to get started somewhere. All the
  2167.       docs are still "2.0". I probably have to kill the amoksana
  2168.       stuff if I can't get a fixed device driver. :-/
  2169.       It *should* already allow for a clean update from 2.0 or
  2170.       previous envoy versions and a new installation. Let me know
  2171.       what happens for you.
  2172.     - nipc.library uses some of the internal services.library
  2173.       magic, too. It now depends on V43 of services.library.
  2174.       nipc.library is now at 43.8.
  2175.  
  2176.     - More rework to the installation. Still no in depth tests or
  2177.       improvements, but the basic bugs I introduced should be
  2178.       squashed now. Sometimes I wish I had reworked Installer at
  2179.       the time to support on demand include files. If it just
  2180.       hadn't been that messy... :-/
  2181.     - The central IDCMP handling loop in envoy.library kept on
  2182.       processing the currently available messages on an end request.
  2183.       This overwrote state variables and could cause it not to
  2184.       react to, e.g., an OK click. envoy.library is now at 43.16.
  2185.     - The problem with IOUsedTwice paranoia alerts in nipc should
  2186.       now be fixed. They came up when a new transaction was replied
  2187.       to (due to a transmission error) before being sent
  2188.       completely. Now, the transaction is only added to the async
  2189.       management when the transfer has completed. This is protected
  2190.       code to make sure that an immediate reply is not lost.
  2191.       nipc.library is now at 43.9.
  2192.     - EnvoyFileSystem did not report write protection for locally
  2193.       locked volumes correctly. EnvoyFileSystem is now at 43.4.
  2194.     - I got a bug report about C:Copy reporting filenames several
  2195.       times when copying files from a remote CacheCDFS mount. I
  2196.       still think that CacheCDFS may mess up the ExNext chain here
  2197.       as I take great care to preserve the FIB well. Nevertheless,
  2198.       I investigated the ExFOO stuff in the filesystem.service and
  2199.       found less than great handling of errors and the magic
  2200.       .backdrop/Disk.info examination. I reworked this to be a lot
  2201.       better now. Also, the first ExNext after an Examine of the
  2202.       mounted "root" should now behave according to spec, even
  2203.       though it is a little bit slower than it used to be.
  2204.       filesystem.service is now at 43.2.
  2205.     - SH**, D*****! On V37 systems, ng_TextAttr must remain valid
  2206.       and constant throughout the lifetime of the gadget or you
  2207.       will get very strange rendering for some gadtools gadgets!
  2208.       Another one of those untold stories! While comparatively easy
  2209.       to work around even with font sensitivity, this affects quite
  2210.       some amount of code.
  2211.     - Filesystem Imports preserves the mono TextAttr now. It is now
  2212.       at 43.5.
  2213.     - Filesystem Exports preserves the mono TextAttr now. It is now
  2214.       at 43.4.
  2215.     - Services Configuration preserves the mono TextAttr now. It is
  2216.       now at 43.4.
  2217.  
  2218.     - I broke ExamineFH with the previous rework of the EFS server.
  2219.       It would also return a user reject for a non existent mount.
  2220.       Now it should tell you that there is no mount instead. I
  2221.       think I found the cause for the "stale" lock/fh paranoia
  2222.       alerts. Very complex and heavy magic. As I could never
  2223.       reproduce them myself, I added another magic check to confirm
  2224.       my idea on this before blindly adding "fixes". Let my know
  2225.       about the next batch of Alerts and sushi output that you get.
  2226.       I also found a few less than safe checks that I fixed. On the
  2227.       way I reworked the library startup code to behave better.
  2228.       I forgot to tell you that you cannot any longer export Envoy
  2229.       mounts to avoid circular FS packet handling deadlocks.
  2230.       filesystem.service is now at 43.3.
  2231.  
  2232.     - Only a user with Admin rights can now use Filesystem Exports.
  2233.       Filesystem Exports is now at 43.5.
  2234.  
  2235.     - EnvoyFileSystem messed with the connection identification on
  2236.       an ACTION_DISK_INFO while the network was down or an error
  2237.       occurred. This is not a good idea as a reconnect will be
  2238.       triggered when needed automatically. There is no need to
  2239.       arbitrarily try to force one. Also, a mount with >65535
  2240.       reconnects should behave correctly now :^). There was a
  2241.       problem with locating a correct volume node after disk
  2242.       insertion in case the volume node name had been modified to
  2243.       avoid name collisions. The client will now use the internally
  2244.       kept "true" name to identify volume names. Locks and FH's
  2245.       no longer require two memory allocations each. DupLock() of
  2246.       an internal fake lock or a 0 lock will now also try to create
  2247.       a fake lock before contacting the server. This should help
  2248.       GetDeviceProc() based applications. ExNext() related Zombie
  2249.       locks could be freed without freeing the attached reconnect
  2250.       info. EnvoyFileSystem is now at 43.7.
  2251.     - filesystem.service had a messy way of handling the baselock
  2252.       of a mount. It could do diskchange loops on local Envoy
  2253.       mounts and possibly deadlock. This should be fixed now. I
  2254.       also added quite a few DEBUGGING kprintfs whenever a volume
  2255.       is set up or changed. There are also new paranoia checks
  2256.       inside to report on memory trashing of the internal resource
  2257.       lists for locks and file handles. This should help to
  2258.       identify the cause for bad locks. This is a debugging
  2259.       release. It should also ignore old uid's/gid's now in the
  2260.       export config as they represented a mount security hole.
  2261.       There was a basic flaw in ACTION_FINDUPDATE handling. The
  2262.       meaning for non existing and existing files was reversed,
  2263.       causing the action to basically fail to do the job whenever
  2264.       you needed it. As nobody reported any problems here, I have
  2265.       to assume that it is basically an unused action in real life.
  2266.       I enabled basic read only support as most of this feature
  2267.       stuff has been in there anyway, but there is nothing yet to
  2268.       set that kind of configuration. filesystem.service is now at
  2269.       43.5.
  2270.     - On reception of a transaction response with a response buffer
  2271.       that is too small (shouldn't happen!), a buffer could have
  2272.       been left lying around. A request for allocation of zero
  2273.       length buffers for AllocTransactionA() will be ignored now.
  2274.       Transaction structures are internally cached now, rather than
  2275.       freed immediately. This should reduce overhead and
  2276.       fragmentation. Incoming requests put together their own
  2277.       transaction rather than using AllocTransactionA(). The
  2278.       reception code for transaction data (request/reply) assumes
  2279.       that transactions are sent in a strictly sequential fashion.
  2280.       Due to the locking rework, this was no longer ensured if some
  2281.       maniac used one entity on multiple contexts in a certain way.
  2282.       This should now be safe again. There was a bug that could
  2283.       break small transactions from a slow to a fast machine.
  2284.       Incoming replies are handled according to their corresponding
  2285.       transaction which is on a wait list. Consider the following
  2286.       scenario. The transaction fits into one packet. The slow
  2287.       machine sends this packet successfully. Before it is able to
  2288.       add the transaction to the wait list now, the server has
  2289.       processed it and replied. This reply is lost on the slow
  2290.       client because the transaction is not yet on the wait list.
  2291.       If the timeout isn't set too short, retransmits will kick in.
  2292.       This seems to be the whole cause of the "5 seconds until
  2293.       reply" problem. Timing the 5 seconds led me to the solution.
  2294.       Locking was incorrect here. Sending the last piece of any
  2295.       transaction and adding it to the wait list on success must be
  2296.       atomic with respect to incoming reply processing. A wrong
  2297.       semaphore was used. I coudl _at_times_ reproduce the 5
  2298.       second thing, but never the EFS Alert problem. This current
  2299.       nipc problem may actually have been the cause for the EFS
  2300.       invalid lock paranoia alerts for packet type 15. Due to the
  2301.       missed transaction, EFS retransmits may have kicked in here.
  2302.       I just hope nothing else comes up. You may ask why it is so
  2303.       hard to get this right. Here is a short overview about the
  2304.       semaphores juggled for things inside nipc:
  2305.  
  2306.         - Entity:           4 each
  2307.         - RDP Connection:   4 each
  2308.         - Routes:           1 each
  2309.         - Misc stuff:       22
  2310.  
  2311.       There is a lot of room to err, leaving timing dependent
  2312.       issues aside completely. nipc.library is now at 43.10.
  2313.  
  2314.     - Reestablishing a notification did not use the correct volume.
  2315.       It tried to reference the current one which could have been
  2316.       NULL. EnvoyFileSystem is now at 43.8.
  2317.     - A change for filesystem.service. On [re]connecting, it sent
  2318.       out the mount info before establishing a current volume. Then
  2319.       it sent out the diskchange info for the volume. This caused a
  2320.       timing hole on the client. It got the mount with an info of
  2321.       "no volume inserted". Under the right circumstances, this
  2322.       caused the packet to fail with a "please insert" problem due
  2323.       to quite some concurrent activity in the client. Then the
  2324.       diskchange would be processed and the problem would fix
  2325.       itself automagically after at most ~1 second. Now, the server
  2326.       sets up the volume info before returning the mount
  2327.       transaction. This means that the client will now mount "full"
  2328.       drives whenever possible, rather than "empty" ones for about
  2329.       a second. Incidentally, the solution is in some way a hack.
  2330.       The server "finds" the volume by doing disk change handling
  2331.       internally. So it sends out a diskchange and returns the info
  2332.       about the newly mounted volume afterwards. As the client
  2333.       processes mount info in sync and knows about redundant
  2334.       diskchange messages, there is no problem of transaction order
  2335. !!    here. The debugging output is still in there just in case.
  2336.       filesystem.service is now at 43.6.
  2337.     - In severe low memory conditions the packet write stuff in
  2338.       nipc could dereference NULL pointers, writing into the
  2339.       vector table. nipc.library is now at 43.11.
  2340.     - Major rework for the GUI engine in envoy.library. It now
  2341.       supports gadget "unions" and tagging/query of layout groups
  2342.       to make pages possible. Also non-pixel scaled stretching of
  2343.       gadgets with arbitrary positioning is now supported
  2344.       correctly. Another thing is constant layout tag lists with
  2345.       presets of variable values. This should help stack usage.
  2346.       Option pages via gadget unions require a full window redraw.
  2347.       This is a gadtools problem. Well, unfortunately the layout
  2348.       engine is now about ~8.5KB big. It used to be below 8KB.
  2349.       envoy.library is now at 43.17.
  2350. !!  - Some more rework for the layout engine. You never think of
  2351. !!    everything before you actually start using your work. I did
  2352. !!    not handle some V37<->V39 issues well and was not able to
  2353. !!    fill a cell with a gadget without stretching the cell.
  2354. !!    Network Configuration is tricky and told me lessons on quite
  2355. !!    some issues. You *MUST* use this envoy.library with the stuff
  2356. !!    below! envoy.library is now at 43.18.
  2357.     - Filesystem Exports now uses two option pages, one for the
  2358.       security settings, and one for mount behaviour. The new
  2359.       envoy.library >=43.17 is *required* and a new catalog is not
  2360.       a bad idea. If you want a umask for file or dir creation
  2361.       like thing, you have to come up with a way to integrate it
  2362.       into the GUI. Filesystem Exports is now at 43.7.
  2363.     - Finally, I found the problem with the cycle gadget hit in
  2364.       Filesystem Imports. The layout is again 640x200 compatible
  2365.       now and the login requester uses the presets now if nothing
  2366.       else has been specified. The listview now has a prop font
  2367.       title for GUI consistency with FS Exports. Filesystem Imports
  2368.       is now at 43.7.
  2369.     - Services Configuration started up with a warped service
  2370.       selection. It also makes use of the new GUI tags now for
  2371.       better and consistent looks of, e.g., the listviews and
  2372.       checkmarks. Services Configuration is at 43.5.
  2373.     - Users now also has a nicer GUI. Users is now at 43.3.
  2374.     - Groups now also has a nicer GUI. Groups is now at 43.2.
  2375.     - Network Configuration uses the new GUI stuff now. Not easy at
  2376.       all. It also finally recognizes changes to the realm server
  2377.       address even if you don't hit ENTER. Network Configuration is
  2378.       now at 43.2.
  2379.     - Network Configuration now won't open envoy.library when doing
  2380.       config file based prefs updates. This is needed for a fresh
  2381.       installation. It also asks for an admin user now. Network
  2382.       Configuration is now at 43.4.
  2383.     - Services Configuration now won't open envoy.library when
  2384.       doing config file based prefs updates. This is needed for a
  2385.       fresh installation. It will also no longer open services if a
  2386.       service name is given in the config file and ask for an admin
  2387.       user whith the GUI. Services Configuration is now at 43.7.
  2388.     - The user with uid 0 is now always Admin when set up and can't
  2389.       be removed. On database creation, the "Admin" password is now
  2390.       required for the new "Admin" user. The accounts manager can
  2391.       algorithmically generate non conflicting names for new users
  2392.       now if the prefs tool passes in a NUL name. Groups and users
  2393.       without name can no longer be added or modified. White magic.
  2394.       The manager now needs accounts.library for password
  2395. !!    encryption. I don't like code duplication. You *MUST* use
  2396. !!    this accounts manager now. Accounts Manager is now at 43.2.
  2397.     - accounts.library now uses the new standard library startup
  2398.       code. It is a lot easier to maintain. Fixed numerous autodoc
  2399.       problems. accounts.library is now at 43.1.
  2400.     - Some fairly major rework of the installation script to make it
  2401.       more flexible. The user has to reboot now right after a
  2402.       deinstallation. I thought about algorithmically shutting down
  2403.       Envoy but figured that I could never play it safe with all
  2404.       the installations out there. It is now possible to chose
  2405.       installation directories for devs, libs, l, c, and locale in
  2406.       expert mode. SetPatch will always be installed to SYS:C. It
  2407.       knows that ICard users, typically have unit 1 connected. The
  2408.       problems with missing nipc config files on a fresh
  2409.       installation should be history now with the adapted
  2410.       configuration tools. All drawer icons should now be created
  2411.       when needed.
  2412.     - Users knows about the algorithmic names now and has some
  2413.       magic for a better GUI with uid 0. Users is now at 43.4.
  2414.     - Groups knows about the algorithmic names now. Groups is now
  2415.       at 43.3.
  2416. !!  - Just a reminder. The initial user/pw combination is
  2417. !!    "Admin"/"Admin". The password is case sensitive.
  2418.     - ACTION_CHANGE_MODE was broken for FileHandles in the EFS
  2419.       client. EnvoyFileSystem is now at 43.9.
  2420.     - Hmm. I still have to do something about the
  2421.       printer stuff and the disk is almost full. I probably have to
  2422.       get rid of something on that disk. Hmm.
  2423.     - Network Printing is all new now. It writes a new configuration
  2424.       file which is also read by the new port-handler. Network
  2425.       Printing is now at 43.1.
  2426.     - Reworked my new port-handler for better internal device name
  2427.       management. It also reads the new prefs file now and a
  2428.       reasonably safe shutdown is possible for debugging purposes
  2429.       if you know how. port-handler is now at 43.2.
  2430.     - With a little bit of luck, envoyprint.device should now
  2431.       internally support the magic unit handling which is used to
  2432.       easily redirect PRT:, PAR:, and SER:. Note: I do not care
  2433.       much for backwards compatibility here. envoyprint.device is
  2434.       now at 43.2.
  2435.     - The magic V37 printstart kludge is now a little bit smaller
  2436.       and no longer has a data segment. Envoy V37 PrintStart is now
  2437.       at 43.1.
  2438.     - Added logging support to nipc. Currently, we have some
  2439.       Entity, Transaction, RDP, ICMP, and SANA2 logging to a
  2440.       certain extent but the system is pretty much open ended. I'll
  2441.       add other and more logging messages when needed. To display
  2442. !!    the logging messages, you must run the new magic "NIPCLog"
  2443. !!    debug tool specifying log levels for whatever you want
  2444.       logged. The tool is in the Extras directory of the install
  2445.       disk. It can be started multiple times with different and
  2446.       even overlapping options to get different logs in parallel.
  2447.       Lack of memory results in dropped log messages. Logging is
  2448.       done async and does not affect nipc except for preparing the
  2449.       log message and using PutMsg() on it in case it is needed.
  2450.       Log levels range from 0 to 255 for each subsystem. Don't try
  2451.       anything else. 0 == no logging, 1 == log important errors,
  2452.       <100 == misc stuff, <200 == most internal things logged, 255
  2453.       == pretty much everything including functions called. You may
  2454.       want to start with 255 to see what kind of stuff is logged.
  2455.       Let me know if you see performance problems even with no
  2456.       logging at all. To avoid such problems I am intentionally not
  2457.       logging individual packets anywhere. Finally, nipc.library is
  2458.       no longer fully relocatable code because it is too big now.
  2459.       Sigh. I also added a missing tagcall proto for the route
  2460.       functions. nipc.library is now at 43.12.
  2461.     - filesystem.service will now copy an internal FIB for
  2462.       Examine_Next only when really needed. This is more an
  2463.       optimization that came when looking for a problem that
  2464.       doesn't seem to be the fault of EFS after all. So it is
  2465.       not really a bug fix. filesystem.service is now at 43.7.
  2466.  
  2467.     - I walked through nipc code to identify and eliminate obscure
  2468.       code and other risks. A math function used in calculating
  2469.       times in PingEntity() would destroy D2. Luckily, this didn't
  2470.       break the caller. The internal checksum function should now
  2471.       be a little more robust and maybe faster for the typical
  2472.       packet. it also handles odd start offsets now on plain 68000
  2473.       machines. Internally checksumming NIPCBuffs will now take
  2474.       buffer offsets into account. RDP packets with a totally
  2475.       broken header should not be accepted for anything now. When
  2476.       sending IP options with an IP packet (which nipc doesn't!),
  2477.       option padding was broken. It destroyed up to the first three
  2478.       option bytes rather than adding padding at the end. The RDP
  2479.       code now makes a better attempt to get the packet back in
  2480.       shape on retransmits. Previously it made assumptions about
  2481.       what the IP layer did with the data buffer and how it
  2482.       prepended buffer entries for IP headers or ARP management.
  2483.       While the assumptions were correct, I anticipate some changes
  2484.       and made RDP no longer rely on those assumptions "as is". In
  2485.       case of an error on preparing an RDP packet for output, the
  2486.       RDP code will no longer have the data buffer modified. This
  2487.       didn't affect transactions at all but is much cleaner now.
  2488.       RDP retries now count as connection activity. On retries, the
  2489.       new wait is based on the current maximum roundtrip estimate
  2490.       now rather than the current estimate. Retries are started up
  2491.       faster now if needed. All this should stabilize retry
  2492.       behaviour and fix connections where transaction would have
  2493.       timed out already otherwise. RDP logging is much better now.
  2494.       IP packet sending will now try harder to preserve the data
  2495.       areas passed in until the packet is actually sent. See the
  2496.       autodocs. An internal memory management call could have freed
  2497.       a NULL pointer in a low memory situation. I improved ARP
  2498.       handling. Packet timeouts during ARP handling are now
  2499.       connected to the corresponding ARP entries as they should be.
  2500.       With a maximum resolve wait of about 30 seconds with ARP
  2501.       tries every three seconds, ARP should now handle lousy
  2502.       connections much better and should fail a lot less. ARP
  2503.       flooding per IP should no longer be possible. If an ARP
  2504.       resolve is already pending, sent out packets will simply
  2505.       "wait" with the already existing ones rather than causing a
  2506.       new resolve try. On SANA config updates, corresponding ARP
  2507.       entries will finally be killed to avoid stale references. ARP
  2508.       logging implemented and ICMP logging fixed. I added some
  2509.       additional checks for broken incoming IP packets. Thanks to
  2510.       olsen for pushing the log idea. I may well have been to lazy
  2511.       to do anything about this subject myself. It helps a lot,
  2512.       even though the log messages make nipc bigger. nipc.library
  2513.       is now at 43.13.
  2514.  
  2515.     - The option page gadget for Network Configuration now has a
  2516.       label. Network Configuration is now at 43.5.
  2517.     - The option page gadget for Filesystem Exports now has a
  2518.       label. Filesystem Exports is now at 43.8.
  2519.     - nipc.library still had some problems in the checksum
  2520.       function. Added more SANA2, IP, and RDP logging. I added a
  2521.       very evil and ugly hack to throttle packets on retries. A
  2522.       retried packet will cost nipc internally about 20ms time now.
  2523.       The alternative would have been one second intervalls after
  2524.       each retried packet. This 20ms delay is to avoid flooding
  2525.       destinations while still being able to handle broken
  2526.       networking HW. Those with good connections won't be affected
  2527.       at all. I don't like this hack at all, but it seems to be
  2528.       "reasonable" compared to alternatives. nipc.library is now at
  2529.       43.14.
  2530.  
  2531.     - As it seems, some SANA devices may return more than MTU bytes
  2532.       of data on a CMD_READ. nipc now allocates 64 extra bytes to
  2533.       cope with those broken devices. To support this and better
  2534.       buffer management size checks, I reworked the SANA code a
  2535.       bit and removed strange use of two SANA callbacks in other
  2536.       parts of nipc. For DMA capable SANA devices, nipc now
  2537.       contains an additional sanity check. nipc.library is now at
  2538.       43.15.
  2539.  
  2540.     - All the prefs editors had WA_AutoAdjust disabled for some
  2541.       obscure reason which kept some of them from opening on small
  2542.       screen sizes. This should no longer be a problem. Also,
  2543.       Network Configuration did not recognize intermediate changes to
  2544.       the integer unit/IP type/ARP type gadgets well. Network
  2545.       Configuration is now at 43.7. Services Configuration is now
  2546.       at 43.8. Filesystem Imports is now at 43.8. Filesystem
  2547.       Exports is now at 43.9. Users is now at 43.5. Groups is now
  2548.       at 43.4.
  2549.     - The password check on startup was incorrect. Network
  2550.       Configuration is now at 43.8. Services Configuration ist now
  2551.       at 43.9, and Filesystem Exports is now at 43.10.
  2552.     - When obtaining the size of the sizing gadgets in the layout
  2553.       code, envoy.library will no longer request a specific size.
  2554.       Now it is left up to sysiclass to find the "correct" size
  2555.       which helps hacks and is a better idea anyway. envoy.library
  2556.       is now at 43.19.
  2557.     - nipc will now truncate incoming oversized packets rather than
  2558.       trying to allocate more than MTU bytes per packet. IP number
  2559.       changes did not update the ARP cache correctly. I changed the
  2560.       prototype for SetDeviceIPAddress() significantly and made
  2561.       NIPCControlA() public. Due to internal numbering conflicts, I
  2562.       also changed the values of previously unused tags in nipc.h
  2563.       significantly. Due to a bug in the ARP code, a NULL pointer
  2564.       could have been dereferenced. A new function
  2565.       AllocNIPCBuffEntryWithMem() is now publically available for
  2566.       more efficient IP protocol support. nipc.library is now at
  2567.       43.16.
  2568.  
  2569.     - Due to some problems that I encountered, I reworked
  2570.       a2065.device. Error recovery for the lance chip was pretty
  2571.       much hosed. The softint could have problems
  2572.       sending the correct packet. Multicasting and online could
  2573.       have eaten up pending write request forever. If the lance
  2574.       locks up, without apparent reason, the driver will now
  2575.       silently try to restart it. Some cleanup work should result
  2576.       in less Disable() and interrupt activity. AbortIO() was IMHO
  2577.       still flaky for R/W requests. Please test this.
  2578.     - Filesystem Exports didn't fit on a 640x256 screen anymore. It
  2579.       is now at 43.11.
  2580.     - filesystem.service no longer has enabled debug statements.
  2581.       filesystem.service is now at 43.8.
  2582.     - More work on a2065.device. It did not abort a pending event
  2583.       request correctly and reset the configuration status
  2584.       incorrectly. a2065.device is now at 3.11.
  2585.     - For better debugging you can now specify IP addresses as
  2586.       host name for FindEntity() calls. This also affects the
  2587.       host requester of envoy.library which makes use of
  2588.       FindEntity(). The sana code in nipc.library now keeps track
  2589.       of pending requests and aborts them individually on
  2590.       reconfiguration as a CMD_FLUSH doesn't cover pending event
  2591.       requests. In strange situations, this could have hung
  2592.       nipc.library. nipc.library is now at 43.17.
  2593.  
  2594.     - Minor enhancement to envoy.library. A private IDCMP
  2595.       management function can now be called as single shot
  2596.       callback for better support of async window management.
  2597.       Also, flags have been added internally to support shared
  2598.       IDCMPs. This was needed for the printer stuff. envoy.library
  2599.       is now at 43.21.
  2600.  
  2601.     - My new port-handler 43.4 now supports quite some stuff:
  2602.         1. PRT:TRUERAW uses PRD_RAWWRITE instead of sending an ESC.
  2603.         2. full duplex io should be possible.
  2604.         3. Timeout handling for PAR: and SER:
  2605.         4. Special PAR:/SER: redirection capabilities for network
  2606.            printing support for dumb applications.
  2607.         5. Can display the rate with the GUI/NOGUI options
  2608.         6. SER:FAST can be specified to get RADBOOGIE
  2609.         7. TIMEOUT=<x> can be specified for selective abort
  2610.         8. Should autoabort any timeout requester if the request
  2611.            finishes afterall.
  2612.     - I updated Network Printing to support the new port-handler
  2613.       prefs as needed. Note that printing redirection with this
  2614.       tool will not work as expected until the new print server is
  2615.       in place. Timeouts should work, though. They are always
  2616.       valid, not just when something is redirected. A timeout value
  2617.       of 0 means "wait forever"! Network Printing is now at 43.2.
  2618.  
  2619.     - nipc.library way a little bit restrictive about subnet masks.
  2620.       I changed a single line to make it more flexible.
  2621.       nipc.library is now at 43.18.
  2622.     - Filesystem Exports did not have the OldUID/GID texts localized.
  2623.       It is now at 43.12.
  2624.     - The all new Printer Exports is finally working as it is
  2625.       supposed to be. Note the new name with an "s" at the end.
  2626.       Note that it will write a new prefs file with a new name. It
  2627.       will not pick up old prefs. Default Exports "SER", "PAR", and
  2628.       "PRT" are prepared but not activated if they are not yet set
  2629.       up. This is to support the magic standard redirection of a
  2630. !!    client's SER:/PAR:/PRT: dos devices. It will not do anything
  2631. !!    with the old  printer stuff. Printer Exports is now at 43.3.
  2632.     - envoy.library had a little quirk in the layout engine. When
  2633.       spreading out gadgets it spread out gadget sizes even when it
  2634.       shouldn't have. I need a special requester for the new
  2635.       printing system. Rather than duplicating yet another piece of
  2636.       requester code, I unified the requester code used and made it
  2637.       accessible in majik, clean, and private ways to external
  2638.       parts of Envoy. Obviously this means that all requesters
  2639.       generated by envoy.library need to be retested in detail. Let
  2640.       me know if behaviour, memory usage, stack usage, or
  2641.       keystrokes/tabbing changed in adverse ways. BTW, the password
  2642.       entry gadgets are once again restricted in cursor movements.
  2643.       Let me know if this is a problem. envoy.library is now at
  2644.       43.23.
  2645.     - Many locale changes. Obviously this is somewhat preliminary.
  2646.  
  2647.     - *sigh* My last "improvement" to nipc.library killed default
  2648.       settings for subnetting which in effect tends to kill any
  2649.       kind of communication. This should be fixed now while still
  2650.       keeping the net masks flexible. nipc.library is now at 43.19.
  2651.     - *sigh* All the prefs editors used an IntuiMessage after it
  2652.       had been replied to. This bug has been in there forever and
  2653.       is also affecting the AmigaOS prefs editors, even though it
  2654.       may not be generally noticable. Groups is now at 43.5. Users
  2655.       is now at 43.6. Network Printing is now at 43.3. Printer
  2656.       Exports is now at 43.4. Filesystem Imports is now at 43.9.
  2657.       Filesystem Exports is now at 43.13. Services Configuration is
  2658.       now at 43.10. Network Configuration has been reworked as
  2659.       listed below.
  2660.     - To support a few necessary features for general interfacing,
  2661.       I decided to rework the Devices panel in Network
  2662.       Configurations. Any used SANA2 device parameter set will now
  2663.       have a unique interface name that is of use to some internal
  2664.       nipc functionality that is not of concern to the casual user.
  2665.       The program takes great pains to always keep the names
  2666.       reasonable and unique. Also, automagic gadget activation
  2667.       should help entering data a bit now. Incidentally, it works
  2668.       more like all the other Envoy prefs tools now. Hmm. In
  2669.       fact, Filesystem Exports really should use the export
  2670.       names, too. Hmm. Network Configuration is now at 43.9.
  2671.     - Another revision for the envoy.library GUI engine. I added a
  2672.       new function to put an abstraction layer into GUI creation.
  2673.       I also added a magic identifier for a new selection gadget
  2674.       that doesn't look all that new to the user currently.
  2675.       This is needed (now) by the reworked Network Configuration
  2676.       and will be needed by more stuff in the future as prefs grow.
  2677.       envoy.library is now at 43.24.
  2678.     - Another locale update. Won't be the last.
  2679.     - NIPCLog didn't pass all the options on to nipc.library.
  2680.       I also changed the version to V43. NIPCLog is now at 43.1.
  2681.     - nipc.library will now add the internal routes for the sana
  2682.       devices with the correct subnet masks. ICMP redirects,
  2683.       timestamps and address mask requests should now be handled
  2684.       correctly. Especially redirect handling was pretty bogus.
  2685.       Added UDP logging. Routes for specific hosts are now handled
  2686.       correctly even with net routes being available for the same
  2687.       net. There was a bug where routes with less significant
  2688.       netmasks that were added later would obscure more significant
  2689.       routes. A simple two slot cache should make route and ARP
  2690.       lookup faster. With two 060 machines and halfway decent
  2691.       Ethernet boards, it should be possible to get DiskSpeed to
  2692.       RAM: with >700KB/s. My test setup with an 040/40 and
  2693.       060/50 maxed out at about 695000Bps. Added some Resolver
  2694.       logging. nipc.library is now at 43.23.
  2695.     - Issue: nipc.library currently has a few non localized
  2696.       requesters for SANA problems. Should these be localized,
  2697.       too?! There may be a need for more messages in the future,
  2698.       e.g., to notify about duplicate IP addresses. Let me know
  2699.       what you think.
  2700.  
  2701.     - Due to a very strange bug report about unreliable RDP (hah!)
  2702.       I checked the RDP code and found a potential hole, even
  2703.       though I could not reproduce the actual reported bug.
  2704.       Plugging the hole the right way raised RDP efficiency by well
  2705.       over 10%. With the setup described above, I get peak rates of
  2706.       >775kBps now. This is through the RAM handler, EFS Server,
  2707.       a2065.device, ariadne.device, EFS client, the transaction
  2708.       mechanism on both side, RDP of course, and the IP layer.
  2709.       Pretty efficient, don't you think? Well, anyway, the bug was
  2710.       an nipc Alert about a lost RDP packet that simply can't
  2711.       happen. I added a few RDP diagnostics to catch stuff like
  2712.       this. If you want to find bugs here, keep nipclog with
  2713.       LOGRDP=10 in the background nipc.library is at 43.24.
  2714.  
  2715.     - There was a rather serious bug in nipc.library. Whenever you
  2716.       changed the prefs, nipc reconfigured itself. Due to the
  2717.       changes with >=43.19, it did not set up the ARP entries for
  2718.       SANA2 devices correctly again in this case. Net result: All
  2719.       connections lost. nipc.library is now at 43.25.
  2720.  
  2721.     - Until I find the cause for the alert in nipc that tells me
  2722.       about internally broken transactions, I added some paranoia
  2723.       code so that this data can't cause any harm in upper levels.
  2724.       Basically, you won't get an Alert 07000004 anymore. You can
  2725.       still track that problem with NIPCLog, using an entity log
  2726.       level of 1 though without flooding yourself in useless
  2727.       messages. log levels of one always tell you about serious
  2728.       problems only. This should help during standard use while at
  2729.       the same time allow us to locate the source of the problem.
  2730.       nipc.library is now at 43.26.
  2731.  
  2732.     - Printer Exports has slightly renamed default names. It no
  2733.       longer allows a delete of the default entries but the user
  2734.       can still rename them as she wishes. I am not sure
  2735.       that I am completely happy with this, yet. Printer Export is
  2736.       now at 43.5.
  2737.     - The first cut of the new Printer Imports tool is finally
  2738.       done. It looks a lot like Filesystem Imports. You can import
  2739.       printers for Default Printer Output, PRT:, PAR: and SER:.
  2740.       It should be possible to import multiple printers from
  2741.       different machines for each mode respectively. Each new
  2742.       import for a certain mode should override any old one
  2743.       correctly. Printer Imports is now at 43.2.
  2744.     - envoyprint.device should now handle the new printer stuff,
  2745.       too. It is now at 43.3.
  2746.     - The new Envoy Print Spooler (EPS) shows first signs of life
  2747.       for the first time ever.
  2748.       It will read and evaluate the prefs and tell the
  2749.       new Printer Imports about them. It also accepts files and
  2750.       seems to print them well. Known limitations and issues at
  2751.       this point of time:
  2752.         - Doesn't pick up old spool files after a reboot yet.
  2753.         - The few diagnostic requesters don't have locale support yet.
  2754.         - No loop protection yet. The spooler will happily print
  2755.           to envoyprint.device. Hmm. Feature or bug?
  2756.         - No command(s) for status/queue management yet. Issue:
  2757.           What should be possible/visible and for whom?
  2758.         - How the heck should errors be handled once the spool file
  2759.           is ready to print? Examples: Failure to write data to
  2760.           device or lack of memory for management data.
  2761.           I can't tell the client. Hmm. Any ideas?
  2762.         - Logins for printer exports with security don't yet
  2763.           seem to work. Probably a messed up user/pw check.
  2764.       Magical debugging feature. A CTRL-F will shut down the print
  2765.       spooler task.
  2766.       printspool.service is now at 43.1.
  2767.     - NOTE: ALL THE PRINTER PREFS FORMATS AND FILE NAMES HAVE CHANGED!
  2768.     - A few notes on how to sue the printer stuff:
  2769.  
  2770.         1. You always have some default exports for the server's
  2771.            parallel, serial and printer device. You also have a
  2772.            default export to get the current output device for
  2773.            any printer data generated by printer.device on the
  2774.            server, whichever that may be.
  2775.         2. Default exports can be freely renamed and turned on/off,
  2776.            but they intentionally can't be deleted.
  2777.         3. EPS exports can have security, much like EFS exports.
  2778.         4. The imports tool only handles prefs. It does not activate
  2779.            or deactivate any redirection.
  2780.            That is left for "Network Printing".
  2781.         5. Printer Imports is based on four steps
  2782.             - Select the server machine
  2783.             - Select which printer to manipulate
  2784.             - Select the mode to use for this printer
  2785.             - Connect.
  2786.            There are some implications and magical things here.
  2787.            First, you have to Connect in the "No Connect" mode to
  2788.            disconnect a printer. Any printer connected with a
  2789.            certain mode will override any previous printer for that
  2790.            mode. You can only have one imported at a time for a
  2791.            single data path. If you don't have any default printer
  2792.            output set up yet, the mode will automagically suggest
  2793.            this to you. This is for poor Joe User who doesn't care
  2794.            about DOS redirects.
  2795.         6. No reboots needed for any configuration changes.
  2796.  
  2797.     - printspool.service will now report printers using security
  2798.       correctly. It is now at 43.2.
  2799.     - Printer Imports would create duplicate prefs entries when
  2800.       changing the mode for an import. Net result was strange
  2801.       import mapping. It is now at 43.3.
  2802.     - Open issue: How do I handle loop deadlocks? Imagine this:
  2803.       User exports printer.device/0 as "PRT:". User imports "PRT:"
  2804.       as Default printer output. User activates default printer
  2805.       redirection. User does "echo test >prt:". PRT: uses
  2806.       printer.device 0 ==> data goes to envoyprint.device ==>
  2807.       spooler ==> printer.device 0. Boing. Any ideas?
  2808.  
  2809.     - I think I found a reasonable solution now that still keeps
  2810.       local printing over the spooler intact. If the spooler would
  2811.       be printing to printer.device/0 using envoyprint.device, it
  2812.       refuses to accept the job. If it would print to the default
  2813.       printer.device output currently being envoyprint.device, it
  2814.       will print to parallel/serial.device appropriately instead, to
  2815.       break out of a print loop for a local spool import. No locale
  2816.       support yet and some notification for failing writes to the
  2817.       final output device is still missing. printspool.service is
  2818.       now at 43.3.
  2819.     - I forgot a little feature in the layout functions of
  2820.       envoy.library which is good both for the code using the
  2821.       layout functions, symmetry in internal functionality, and my
  2822.       health. What it was? It's indexed extra info gadget tag
  2823.       support via one new private tag. I used this in Printer
  2824.       Imports. envoy.library is now at 43.25.
  2825.     - Printer Imports uses the new tag now, so envoy.library 43.25
  2826.       is required! Printer Imports is now at 43.4.
  2827.     - filesystem.service accepted a zero lock for
  2828.       ACTION_CHANGE_MODE which really didn't make too much sense.
  2829.       Also, via magical ways it was possible to modify protected
  2830.       .backdrop or Disk.info files on the server. If Disk.info is
  2831.       protected, it will now be read only, not made invisible. This
  2832.       finally fixes the problems with the original icon of an
  2833.       import not being used. Hard links to a protected Disk.info
  2834.       will no longer be possible either. Let me know if you find
  2835.       any way to access/modify either .backdrop or Disk.info if the
  2836.       export isn't configured to allow it. Be creative :^).
  2837.       filesystem.service is now at 43.9.
  2838.  
  2839.     - The EFS server now supports a new internal prefs flag for
  2840.       removeable media which is basically identical to an empty
  2841.       export name. I need this to rework the Filesystem Exports
  2842.       tool. filesystem.service is now at 43.10.
  2843.     - Filesystem Exports now behaves like the new nipc prefs or the
  2844.       printer prefs. It will display the exports in the list view
  2845.       and the path in the gadget to the right. As an empty export
  2846.       name is no longer possible to signify removeable media, you
  2847.       have a checkbox for this now. Previously empty export names
  2848.       get defaults and export names are now made unique to make
  2849.       imports non ambiguous. Net result is that even RMS exports
  2850.       can always have a decent name now without revealing what
  2851.       device on the server is used. NB: If this is used with an old
  2852.       filesystem.service, RMS support is deactivated. I don't see
  2853.       this as a significant problem as mixing installations on one
  2854.       machine is not a good idea. Filesystem Exports is now at
  2855.       43.14.
  2856. !!  - So much has changed that most likely pretty much everything
  2857. !!    is incompatible to Envoy 2.0 now. Just thought I mention it.
  2858. !!    An Envoy 2 and Envoy 3 setup won't be able to communicate well
  2859. !!    if at all.
  2860.     - Implemented a missing command in envoyprint.device.
  2861.       envoyprint.device is now at 43.4.
  2862.  
  2863.     - ARP code could cause enforcer hits in low memory situations.
  2864.       Added some paranoia checks and log messages to catch bad ARP
  2865.       entries. ARP cache will now be flushed on any config change
  2866.       to make sure that network reconfigurations are picked up
  2867.       ASAP. Querying sana devices via the ioctl like mechanism had
  2868.       a flaw. The IP code will now (like the ARP code) report a level
  2869.       one log message if it detects duplicate IP addresses or other
  2870.       very bad things. nipc.library is now at 43.27.
  2871.     - Sigh. Took me quite a while to locate a problem in
  2872.       envoy.library. It could happen that it called
  2873.       GT_SetGadgetAttrs() on the context of input.device. This in
  2874.       effect causes intuition to misbehave in a certain way which
  2875.       causes gadtools to mess up the gadget list in the end. Net
  2876.       result is that you get single gadgets added twice to a list
  2877.       just because you tried to disable or enable them. Ouch.
  2878.       Also, cursor positioning in the magic password gadgets
  2879.       was incorrect after a resize. All this should be fixed now.
  2880.       envoy.library is now at 43.27.
  2881.     - Even as admin, you had to know the old passwords to change
  2882.       a user's password. This was stupid. An admin can now change
  2883.       any pw. Users is now at 43.7.
  2884.     - I needed a new error code. So nipc.library got rebuilt
  2885.       because errors.h is anchored there for hysterical reasons.
  2886.       nipc.library is now at 43.28.
  2887. !!  - While writing the tutorial for the Groups preference editor,
  2888. !!    it turned out that Groups was really non functional. Tracing
  2889. !!    this problem turned up *MAJOR* flaws in *ALL* the accounts
  2890. !!    management. OUCH. Major rework for about everything here!
  2891.     - Accounts Server completely reworked. It is totally
  2892.       incompatible now to the old accounts.library. This is
  2893.       intentional and does not affect the database files.
  2894.       Lots of problems fixed. Lots of them. It is now at 43.4.
  2895.     - accounts.library reworked. Lots of internal magic added to
  2896.       support prefs editors in a decent way. Prefs editors no longer
  2897.       need to make assumptions about internal workings of the server.
  2898. !!    Note that accounts.library is much more restrictive now with
  2899. !!    respect to passed in data. Check the autodocs! Incompatibilities
  2900. !!    are intentional and accepted. accounts.library is now at 43.2.
  2901.     - envoy.library reworked. A feature in the password requester
  2902.       had to be added due to the fact that passwords are no longer
  2903.       passed back from the Accounts Server! envoy.library is
  2904.       now at 43.28.
  2905.     - Users and Groups totally rewritten inside. They should
  2906.       also behave a lot more similarly now and use decent error
  2907.       requesters. Users is now at 43.9. Groups is now at 43.5.
  2908.     - locale completely updated for the new accounts stuff.
  2909.     - Accounts Manager would allow a user to be added to a group
  2910.       twice. It is now at 43.5.
  2911.     - Added basic context sensitive help support due to a very
  2912.       reasonable request. This is reasonably simple currently to
  2913.       keep the amount of work reasonable and really works only with
  2914.       >=V39. Let me know if you think this is a problem. Services
  2915.       Configuration is now at 43.11. Network Configuration is now
  2916.       at 43.10. Filesystem Imports also tries to create icons now
  2917.       for paths that it creates and is now at 43.10. Filesystem
  2918.       Exports is now at 43.15. Users is now at 43.10. Groups is now
  2919.       at 43.8. Network Printing is now at 43.5. Printer Imports is
  2920.       now at 43.5. Printer Exports is now at 43.6.
  2921.     - printer.device not only is a pain, it really sucks. As it
  2922.       turns out, it doesn't really check io_Error on writes to the
  2923.       underlying output device. The only error indication it
  2924.       understands is a device not returning a request, i.e., the
  2925.       request timing out. envoyprint.device now contains a kludge
  2926.       _not_ to return erroneous writes. The requests are kept until
  2927.       the caller aborts them. *sigh* This most likely was the #1
  2928.       cause for network printing problems. envoyprint.device is now
  2929.       at 43.5
  2930.     - Shutting down the print spooler could lose memory. I also
  2931.       finished the basic management interface. printspool.service
  2932.       is now at 43.4.
  2933.     - Added a little Shell tool SpoolMgr to handle the print queue.
  2934.       Would be nice to make a commodity, but right now I don'thave
  2935.       the time. It would only be a gimmick anyway. spoolmgr is at
  2936.       43.1.
  2937.     - Printer Exports didn't handle the magic default printers
  2938.       well. It is now at 43.7.
  2939.     - Network Configuration could deref a NULL pointer in batch
  2940.       mode. It is now at 43.11.
  2941.     - Hopefully this is a release freeze now. Bumped
  2942.       EnvoyFileSystem to 43.10. filesystem.service is now at 43.11.
  2943.       accounts.library is now at 43.3. envoy.library is now at
  2944.       43.29. services.library is now at 43.2. nipc.library is now
  2945.       at 43.29. Services Configuration is now at 43.12. Filesystem
  2946.       Exports is now at 43.16. printspool.service is now at 43.6.
  2947.       Filesystem Imports is now at 43.11. Accounts Manager is now
  2948.       at 43.6. Users is now at 43.11. Services Manager is now at
  2949.       43.2.
  2950.     - In parallel to the context help stuff, I obviously wrote
  2951.       manual text and context help text. LOTS of text. I just hope
  2952.       it makes any sense. Please send me some feedback on the text.
  2953.     - Cleaned up and checked the full build engine. Did the first
  2954.       total cleanup of the RCS tree and build from scratch in a
  2955.       while! Today is 13.sep.98.
  2956.  
  2957.     - The print spooler did not work well for slow output devices.
  2958.       It had a default timeout of 30s/8KB of data. I changed this
  2959.       to be configurable and changed it to 15s/1KB as default value.
  2960.       A value of 0 means that no timeout check is done, which may
  2961. !!    cause a wait that lasts forever! Please load and save your
  2962. !!    export config once to have it saved in the new format!
  2963.       Printer Exports is now at 43.8.
  2964.     - Aside from handling the new configurable timeout now, print
  2965.       error requesters will no longer block network handling of the
  2966.       spooler. If one printer fails to accept data, others
  2967.       should continue to accept data from the network. Also if jobs
  2968.       for the printer are failing to accept data, the spooler
  2969.       should still accept more jobs. The print spooler will only
  2970.       refuse to handle transactions if it can't write the job
  2971.       files. In that case the user has to fix the problem first and
  2972.       ack the EasyRequest. You can also hold and release jobs
  2973.       currently in the print queue now. Holding the currently
  2974.       printing job means stopping the queue. Releasing it means
  2975.       restarting the queue. The printspool.service is now at 43.8.
  2976.     - SpoolMgr now reports the job status, is a little easier to use,
  2977.       defaults to "LISTJOBS" unless other options are given, and
  2978.       can hold/release jobs. SpoolMgr is now at 43.4.
  2979.     - Updated the manual and the online help to reflect the new
  2980.       variable timeout option.
  2981.  
  2982.     - German and english docs basically done.
  2983.     - Final testing
  2984.     - Layout tag tweak to make Network Configuration fit on 640x200 V37
  2985.       screen. It is now at 43.12.
  2986.     - The install script should be a little smarter about subdirs now.
  2987.     - Envoy 3 release. Finally. *sigh*
  2988.  
  2989. Heinz Wrobel
  2990.  
  2991. /*------------------------------------------------------------------------*/
  2992.  
  2993.